<?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>226182</bug_id>
          
          <creation_ts>2021-05-24 11:52:08 -0700</creation_ts>
          <short_desc>REGRESSION(r277940): Caused Safari crash under IPC::typeFromCFTypeRef</short_desc>
          <delta_ts>2021-05-24 11:56:03 -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>226143</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1763204</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-05-24 11:52:08 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/277940 broke the build:
Caused Safari crash under IPC::typeFromCFTypeRef

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>1763206</commentid>
    <comment_count>1</comment_count>
      <attachid>429550</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-05-24 11:52:33 -0700</bug_when>
    <thetext>Created attachment 429550
REVERT of r277940

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763207</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-24 11:54:34 -0700</bug_when>
    <thetext>Committed r277961 (238086@main): &lt;https://commits.webkit.org/238086@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429550.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763208</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-24 11:56:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/78411911&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429550</attachid>
            <date>2021-05-24 11:52:33 -0700</date>
            <delta_ts>2021-05-24 11:54:34 -0700</delta_ts>
            <desc>REVERT of r277940</desc>
            <filename>bug-226182-20210524185232.patch</filename>
            <type>text/plain</type>
            <size>274245</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZlOTM4Yjg1Y2RlZTQz
N2VkYTQ4NmFkNThiNzMxOTQ5YWNmOTVjZi4uNTlkY2YzZWE4YWNhNzViMjJhNDRhZjczNzQ4Mjcw
NDBiMGU2YjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA1LTI0ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI3Nzk0MC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjE4MgorCisgICAgICAgIENhdXNlZCBTYWZhcmkgY3Jhc2ggdW5kZXIg
SVBDOjp0eXBlRnJvbUNGVHlwZVJlZgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKwor
ICAgICAgICAiQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNs
YXNzIHdyYXBwaW5nCisgICAgICAgIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFj
ZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8yNzc5NDAKKwogMjAyMS0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIERyb3AgQ2hlY2tlZExvY2sgLyBDaGVja2VkQ29uZGl0aW9uIGFs
aWFzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDUxMDdiNTg1MGRmOGVhY2IxZjk1MjJkMjEwOWZi
NTdmMjY4ZmJlODAuLmZjN2RmMTE1YzY1Mzk4ZjU0NmUwYjRjNzZmYzQzYWQ1MTJmYWU5OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA1LTI0ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByZXZl
cnRpbmcgcjI3Nzk0MC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjE4MgorCisgICAgICAgIENhdXNlZCBTYWZhcmkgY3Jhc2ggdW5kZXIgSVBDOjp0
eXBlRnJvbUNGVHlwZVJlZgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAg
ICAiQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdy
YXBwaW5nCisgICAgICAgIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBm
b3IgQ0cgcG9ydHMsIGV0Yy4pIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2MTQzCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yNzc5NDAKKwogMjAyMS0wNS0yMyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRv
IGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBm
b3IgQ0cgcG9ydHMsIGV0Yy4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM1Mjg2YTBiNTlkNTVkMDQ2ODliMjZlYzA5
MTc1MjkxM2EyOTUzOGYuLjliZDM2ZDcxODc0YjNjYWIyNzEyNDAyNDMyZTdmM2U1OTU3ZjU3YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDUtMjQgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyBy
Mjc3OTQwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2MTgyCisKKyAgICAgICAgQ2F1c2VkIFNhZmFyaSBjcmFzaCB1bmRlciBJUEM6OnR5cGVGcm9t
Q0ZUeXBlUmVmCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJDb252
ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcK
KyAgICAgICAgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBw
b3J0cywgZXRjLikiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjYxNDMKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI3
Nzk0MAorCiAyMDIxLTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJvcCBDaGVja2VkTG9jayAvIENoZWNrZWRDb25kaXRpb24gYWxpYXNlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDliMTYwZWFkNTdjMmMxNDc2YjgyMmRiMGZiNmU1NTIz
YzFmYjg3ZTAuLjU5YTIzNjQyYjUwNjI2NWVmZmUzNTQ1ZjQ2NWE3ZjkwNzllMTllNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNS0yNCAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyNzc5NDAuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjYxODIKKworICAgICAgICBDYXVzZWQgU2FmYXJpIGNyYXNoIHVuZGVy
IElQQzo6dHlwZUZyb21DRlR5cGVSZWYKKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisK
KyAgICAgICAgIkNvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4gZW51bSB0byBj
bGFzcyB3cmFwcGluZworICAgICAgICBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3Bh
Y2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjc3OTQwCisKIDIwMjEtMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBEcm9wIENoZWNrZWRMb2NrIC8gQ2hlY2tlZENvbmRpdGlvbiBh
bGlhc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBlZjg1NmJjYTkxNGJhODRmMmI0NjZhNGQ3ODk2
ZjU3MjA5Y2JmMzljLi4wOWJmMDI0MDc2NmM3OGE3OTA1NTlhMGY0MTU4NzZhOGI2MGUyMzkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKQEAgLTExOTcsNyArMTE5Nyw2IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EYXNoQXJyYXkuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVu
dC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeS5o
CkBAIC0xMjk0LDcgKzEyOTMsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZv
cm1hdC5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZm
ZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApp
bmRleCA0ZWRkZjg1ZDI3Y2M0MDQ1MGYyYTMxZWEwN2Y3YmU2ZDZiNzAxZjQ4Li45MGExYjQxNTVk
YTMwYzVkZTViYjhmZjVlMzk2ODM5YjY2NTM2ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNh
bml0aXplRGF0YUlmTmVlCiAKICAgICAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdl
OjpjcmVhdGUoKTsKICAgICAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92ZShidWZmZXJU
b1Nhbml0aXplKSwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJ
bWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgIGlmICghaW1h
Z2VCdWZmZXIpIHsKICAgICAgICAgICAgIG1fZGF0YSA9IHsgbnVsbFN0cmluZygpIH07CiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDkyNmNmNjUzNTYzNTQzYTAwNzhiOTAwODJl
MDBmNjY1MGNiYzY0ZGEuLjYxN2Q1MDY1NDAxZDQ4YTQwOWE0ZTc3MWYxZmI3YTE2OTFlNTdlZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0
YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
TWV0YWRhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgQXJ0d29ya0ltYWdlTG9hZGVyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2Ut
PmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6
ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJp
dG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAg
IG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKaW5kZXggN2M2MzQxMGFmODc5YWU0
NWViZDlhMDI5NmRlYmZjODE5NzcxZDJmNy4uMWVmYjgxOWFkYTAzNDU4NDE5NWYzNGNiNWE2NzQ0
NTExMzdiZTk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29y
ZUdyYXBoaWNzU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmgKQEAgLTI0Miw3ICsyNDIsNiBAQCB0eXBlZGVmIHZvaWQgKCpDR1NOb3RpZnlQ
cm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRhLCB1aW50MzJfdCBkYXRhXwog
CiBXVEZfRVhURVJOX0NfQkVHSU4KIAotYm9vbCBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9y
Q29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JS
ZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQgc3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRz
dENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3Io
Q0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJlZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7
CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JUcmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNl
UmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyk7CiAKQEAgLTI5Miw4ICsyOTEsNiBAQCBD
R1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dHU3RhdGVSZWYpOwogQ0dTdHlsZVR5cGUgQ0dT
dHlsZUdldFR5cGUoQ0dTdHlsZVJlZik7CiBjb25zdCB2b2lkICpDR1N0eWxlR2V0RGF0YShDR1N0
eWxlUmVmKTsKIENHQ29sb3JSZWYgQ0dTdHlsZUdldENvbG9yKENHU3R5bGVSZWYpOwotYm9vbCBD
R0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JTcGFj
ZVJlZik7Ci1DRlN0cmluZ1JlZiBDR0NvbG9yU3BhY2VDb3B5SUNDUHJvZmlsZURlc2NyaXB0aW9u
KENHQ29sb3JTcGFjZVJlZik7CiAKICNpZiBIQVZFKENHUEFUSF9HRVRfTlVNQkVSX09GX0VMRU1F
TlRTKQogc2l6ZV90IENHUGF0aEdldE51bWJlck9mRWxlbWVudHMoQ0dQYXRoUmVmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggYTVjNzVkZjc5MWQ3MWJkNjczNzQ0ZmIzZjA0ODM2Yjc3MmFjOTlkOS4uOTdj
ZTU0NzMyMWRjMzdjYmQyNTc1OGY0ZmE2MzkwZjc0MTJkYTMwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTE5NTAsNyArMTk1MCw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZjBmZGY0MjkyODc1NGE5ZjRm
MjdhYjczZThjYWFjYmQ1ODM4ZWZkLi5mYjc0ZWYyZTRjOTJhMTEyMzhlYzg4ZmJhMGQ5ZjAzN2Nk
NTU0YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zOTk2LDcgKzM5OTYsNiBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRD
OTEgLyogR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5o
ICovOyB9OwogCQlCQzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGlj
ZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87
IH07CiAJCUJDMkNCRjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0
MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OwotCQlCQzJDQ0Ex
MDI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMw
MzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRN
TE9iamVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMzA1Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50Lmgg
Ki87IH07CiAJCUJDMzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBE
QjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzM0OEJENDBE
QjdGODA0MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCQSAvKiBX
ZWJDb3JlSlNCdWlsdGlucy5oICovOyB9OwpAQCAtNDAwOCw3ICs0MDA3LDYgQEAKIAkJQkMzQkU5
OTkwRTlDMUU1RDAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCRTk5ODBFOUMxRTVEMDA4MzU1
ODggLyogUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBEM0Q4RDAw
NUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzNEODVC
QzFDMEUyRTdBMDBEM0I2MTAgLyogSlNIVE1MUGljdHVyZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODA4QjEzMUMwRTJCMzUwMDY2RkQ2
QiAvKiBKU0hUTUxQaWN0dXJlRWxlbWVudC5oICovOyB9OwotCQlCQzNFNjI0MzI2NTk3OTE4MDA1
NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1D
b2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkM0MzY4RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAv
KiBSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQkM0NkMxRkQwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ2QzFGMzBDMEREQzhG
MDAyMENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuaCAqLzsgfTsKIAkJQkM0NkMxRkYwQzBEREM4
RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0NkMxRjUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1w
b3J0UnVsZS5oICovOyB9OwpAQCAtMTQxNDEsOCArMTQxMzksNiBAQAogCQlCQzI5OTM1QzE3QTFE
RDU4MDBCQ0U4ODAgLyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzJDQkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAv
KiBKU1dlYkdMQ29udGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAv
KiBKU0VsZW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
RUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F0dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2Jq
ZWN0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE2Niw3ICsx
NDE2Miw2IEBACiAJCUJDM0JFOUFBMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQ
YXJ0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNjcm9s
bGJhclBhcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQz
RDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTWVkaWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMzQzM5QjUwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYg
LyogUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlND
U1NSdWxlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0NTU1J1bGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFG
MjBDMEREQzhGMDAyMENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VSdWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2OTM1LDggKzI2OTMwLDYgQEAKIAkJCQkyRDJGQzA1NTE0
NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlBOENC
NDEwMjBFODVCOEE1MDAzMkM0RjAgLyogRGFzaEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdD
Q0NDQTAwQTY5RTM4IC8qIERlY29kaW5nT3B0aW9ucy5oICovLAotCQkJCUJDMkNDQTBGMjY1NURE
QjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwICovLAotCQkJCUJDMkNDQTBF
MjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLywKIAkJCQk0OUZD
N0E0RjE0NDRBRjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKIAkJ
CQk0OUFGMkQ2ODE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8s
CiAJCQkJMkQyOUVDQzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNs
aWVudC5jcHAgKi8sCkBAIC0yNzExMyw3ICsyNzEwNiw2IEBACiAJCQkJQkM2MzVFOEIyNjRDMkNB
RTAwMEVGMzNBIC8qIFBpeGVsQnVmZmVyRm9ybWF0LmggKi8sCiAJCQkJQkM2MzVFOTAyNjRDNDY5
RjAwMEVGMzNBIC8qIFBpeGVsRm9ybWF0LmNwcCAqLywKIAkJCQlCQ0E1NTkxMjI2M0RCRDc5MDA3
RjE5QjMgLyogUGl4ZWxGb3JtYXQuaCAqLywKLQkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0Qg
LyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkw
IC8qIFBsYXRmb3JtSW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyog
UGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAv
KiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oICovLApAQCAtMzIyNDgsNyArMzIyNDAsNiBA
QAogCQkJCTk0Nzk0OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4RDg1IC8qIERlcHJlY2F0
ZWRDU1NPTVZhbHVlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCRDEyOUUxRjk4QjkwRTAw
MTI3RDI5IC8qIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QkMyQ0NBMTAyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0
YUNoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1N0EzQkYwMEY1NTAzRiAv
KiBEZXRhaWxzTWFya2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFRDc3OEQxQkUz
Mjk0MDAwREMxNzkxIC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjMwMCw3ICszMjI5
MSw2IEBACiAJCQkJMUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3
QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1
NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQkMzRTYyNDMyNjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFF
MDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApp
bmRleCA2YjYwNTQ5NDE4YzlkMDJiZjc4YjkwMThkMDBkMTI5N2I0ZGM5ODFiLi45NmFlMDk4MzI5
NWQ3Nzg1YTIwNWQzMGI0OWNlNzAyZDdhNmVhMzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEwODIsNyArMTA4
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpIH07CisgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH07CiAgICAgICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplID0g
YnVmZmVyLT5sb2dpY2FsU2l6ZSgpOwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVy
LT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUg
fSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAg
ICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSB9OworICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZm
ZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGltYWdlRGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWls
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggMjlh
M2NjOGIyNmVjNTcxM2ZjZGUyMzFhOGQyOGIzZTJhN2FiMzgxZC4uMzZlNWNmYjMxY2MxMzc2YmMz
ZTU0YWNlMzY0YTU3MmY4MmUzNjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJ
bWFnZVZhbHVlLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIFJlZlB0cjxJbWFnZT4gQ1NTRmlsdGVy
SW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6
CiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAgICAvLyBGSVhN
RSAoMTQ5NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5h
Y2NlbGVyYXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gdGV4dHVyZSA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghdGV4
dHVyZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKaW5kZXggMmMxYTNhYTZjNjU3OTNlYzZmNWQ4
NGJkYTRlZjczZWM2OTY5OGVhMy4uOTA5OWI3NDJkYTlkNDBlYzM2YTJkYjRkOTc5ODdiYTZmYjgz
ODU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKQEAgLTky
LDcgKzkyLDcgQEAgSW1hZ2UqIEN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSgpIGNvbnN0
CiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKKyAgICBtX2NvcGllZEJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0
cik7CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IDBmMzMwZWYwNDEz
ODE3OGZlMDc4NzFhNGQ5NTM2NmFmZTg0YmU4NzEuLjgzZmQ1OTg5YjgzZjI4ZTJmYTU5ZGExMmI1
MGJiMmI0NDZlZmVlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFp
bnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgYWRqdXN0
ZWRQYXR0ZXJuQ1RNLnNjYWxlKDEuMCAvIHhTY2FsZSwgMS4wIC8geVNjYWxlKTsKICAgICBhZGp1
c3RlZFNyY1JlY3Quc2NhbGUoeFNjYWxlLCB5U2NhbGUpOwogCi0gICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOwogICAgIGlmICghYnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAgICAgZG9DdXN0b21QYWludChidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0
ZWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXgg
YzAyMTE2ZjlmODBkYjI5MTIzOTNiYzkyMmFjZTZiYTk0Y2YwZDIwYy4uYTVkY2MyNTc3N2Y1NzVj
MWQxZmJhMjZjYjg2NDhkNzhiYjc0ODFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAKQEAgLTgyNSw3ICs4MjUsNyBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEhU
TUxDYW52YXNFbGVtZW50Ojp0b01lZGlhU2FtcGxlKCkKICAgICAvLyBGSVhNRTogVGhpcyBjYW4g
bGlrZWx5IGJlIG9wdGltaXplZCBxdWl0ZSBhIGJpdCwgZXNwZWNpYWxseSBpbiB0aGUgY2FzZXMg
d2hlcmUKICAgICAvLyB0aGUgSW1hZ2VCdWZmZXIgaXMgYmFja2VkIGJ5IEdQVSBtZW1vcnkgYWxy
ZWFkeSBhbmQvb3IgaXMgaW4gdGhlIEdQVSBwcm9jZXNzIGJ5CiAgICAgLy8gc3BlY2lhbGl6aW5n
IHRvTWVkaWFTYW1wbGUoKSBpbiBJbWFnZUJ1ZmZlckJhY2tlbmQgdG8gbm90IHVzZSBnZXRQaXhl
bEJ1ZmZlcigpLgotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxC
dWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9y
bWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1
ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0s
IHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVm
ZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICBhdXRvIFtj
b2xvclNwYWNlLCBwaXhlbEZvcm1hdF0gPSBbJl0gewogICAgICAgICBpZiAobV9jb250ZXh0KQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IG1fY29udGV4dC0+Y29sb3JTcGFjZSgpLCBt
X2NvbnRleHQtPnBpeGVsRm9ybWF0KCkgfTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4IH07CiAgICAgfSgpOwogCiAgICAgc2V0SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUsIHVzZURpc3BsYXlMaXN0LCBSZW5kZXJp
bmdQdXJwb3NlOjpDYW52YXMsIDEsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBmNTRkZDIy
MDU3ZjNlNGZhNmJmMWE2NGRlOTgxNzEwNTYwOGJiNzVkLi4yZWRjYzljYjFjMWNhYjBhYmUxMWE5
OWE5ODYxODYzNzEyZjEwMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6Om1lZGlhUGxh
eWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKICAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZy
b21FbGVtZW50KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZpZGVvRWxlbWVudDo6
Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IEhU
TUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgYXV0byog
aG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCkudmlldygpLT5yb290
KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOwog
ICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNldHRpbmdzKCkuZGlz
cGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNo
b3VsZFVzZURpc3BsYXlMaXN0OjpObzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgKaW5kZXggMGMxNzRiOGI0NzYxMjJmYWJkYzE5OTY1NTg0YTc5MzY3MGZkNTA2MC4uZjU1ODFi
N2Y4OTIyYjBlNTRlNTI1YTEzZjcyYmRjODY2NTAzMTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEhUTUxJbWFnZUxvYWRl
cjsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgUmVuZGVyVmlkZW87CiBjbGFzcyBQaWN0dXJl
SW5QaWN0dXJlT2JzZXJ2ZXI7CiAKK2VudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDog
dWludDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwogZW51bSBjbGFzcyBS
ZW5kZXJpbmdNb2RlIDogYm9vbDsKIApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0
KSBjb25zdDsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZvclBhaW50aW5n
KGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQpIGNvbnN0OwogCiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcg
cGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAKaW5kZXggOGYwM2M2ZmZjNzg2ZmI3MDUzNDJhZTU2NTRiYWQ1MjQ4ODU5NzcwMS4uYjRiODE5
ZTRiYmJmOTcxMDVhNTA4YWZlNTJlY2E3ZDMzZjU3NWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKQEAgLTg0LDEyICs4NCwxMiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdl
Qml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcAog
ICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKICAgICAgICAgaWYgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3
KCktPnJvb3QoKSkgewogICAgICAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1lbnQudmll
dygpLT5yb290KCktPmhvc3RXaW5kb3coKTsKLSAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywg
UmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgICAg
ICAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hv
dWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIHJlc29sdXRp
b25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IGhvc3RXaW5kb3cpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQg
T2Zmc2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRp
b25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwg
cmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJj
ZSYmIHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlBy
b21pc2UmJiBwcm9taXNlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNy
ZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNv
dXJjZVJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IGNvbG9yIHNwYWNlcyAvIHBpeGVsIGZvcm1hdHMgdG8gSW1hZ2VCaXRtYXAuCi0gICAgYXV0byBi
aXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKG91dHB1dFNpemUsIGJ1
ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gYml0bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJG
b3JQYWludGluZyhvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFiaXRtYXBEYXRh
KSB7CiAgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCAhdGFpbnRzT3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2VjdXJpdHlPcmln
aW4oKSwgKnZpZGVvKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAppbmRleCBkOWU4ZWI3ZWY1OWI1YmI3ZDU4
M2EwZTA4ZmYzMDBlNzcyNGU5OTNiLi4zZWYyM2FiM2I3YmNkZTFmMGViZDVkMzcwYzAxOTUyODdj
YTMyN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC00NTEs
MTQgKzQ1MSwxNCBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNh
bnZhcygpCiAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMo
KTsKIAogICAgIGlmIChtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyUGlwZVNvdXJjZSkgewotICAg
ICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICAgICAg
YXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgICAgICBpZiAoYnVm
ZmVyQ29weSkKICAgICAgICAgICAgIG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQaXBlU291cmNl
LT5oYW5kbGUoV1RGTW92ZShidWZmZXJDb3B5KSk7CiAgICAgfQogCiAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJMb2NrIH07CiAgICAgYm9vbCBzaG91bGRQdXNo
QnVmZmVyID0gIW1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyOwotICAgIG1f
cGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvcHlS
ZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKSk7CisgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFn
ZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1
ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VC
dWZmZXItPmNvbnRleHQoKSk7CiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29t
bWl0QnVmZmVyICYmIHNob3VsZFB1c2hCdWZmZXIpCiAgICAgICAgIHB1c2hCdWZmZXJUb1BsYWNl
aG9sZGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDA0MDYyYTA0M2UxMjNlNDE2YjFlOGJmZjA4YjI2
MTE1NjA1ZjYzZjkuLjRjOTI3Mjk3NGVlOTU1Njk0YjE4MGQ2NDU4MjlmMWVmMTBmMWE0ZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgog
I2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKLSNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVv
RWxlbWVudC5oIgpAQCAtOTAsNyArOTAsNyBAQCBQaXhlbEZvcm1hdCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBDYW52
YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQjsKIH0KIAogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50
T3JpZ2luKGNvbnN0IENhbnZhc1BhdHRlcm4qIHBhdHRlcm4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggOTJjMDNjMTll
NGY3MTY0ZThhZDg3YTg5ZWJkNmQ1MDQzZjViNWNiMi4uZDY3ZjZjMGQ0MGQ0ODUxYWFiYTVkZWU2
YTRlNjMyZjM1MDlkNzZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm47Ci1jbGFzcyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U7CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7
CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBUeXBl
ZE9NQ1NTSW1hZ2VWYWx1ZTsKIGNsYXNzIFdlYkdMT2JqZWN0OworZW51bSBjbGFzcyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4
X3Q7CiAKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBh
YmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGU3NTgyYWIzOWJiMjdkM2RmZTE0MmNmYTUyMTNjYjA4
OGM3MjllMWUuLmI1YTZjMzI3MDdiMjU2MWE2ZDE4YjMzNzg0Y2RiMTZjYjA5MTEyODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCIKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5j
bHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIklt
YWdlRGF0YS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0lt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZTQ2ZGRjYWY2YWYzNWMwNDJiZmZk
NDhmYmYzYmVmYWJmMGViZTlkNS4uYjZlODkyNmU5NmFhOTgwYmM5NjEwYTA1MGQ0NTcxYzc4Yjcx
OGI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFn
ZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXAoUmVmUHRyPEltYWdlQml0bWFw
PiBpbWFnZUJpdG1hCiAgICAgICAgIC8vIG9ubHkgcmVhc29uIEkgY2FuIHRoaW5rIG9mIGlzIHRv
RGF0YVVSTCgpLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gbGlrZQogICAgICAgICAvLyBhIGdvb2Qg
ZW5vdWdoIGFyZ3VtZW50IHRvIHdhc3RlIG1lbW9yeS4KIAotICAgICAgICBjYW52YXMoKS0+c2V0
SW1hZ2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoY2Fu
dmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsK
KyAgICAgICAgY2FudmFzKCktPnNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5KEltYWdlQnVmZmVy
OjpjcmVhdGUoRmxvYXRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkp
LCBidWZmZXJSZW5kZXJpbmdNb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCkpOwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0
bWFwJ3Mgb3JpZ2luLWNsZWFuIGZsYWcgdG8gdHJ1ZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCmluZGV4IGVmN2QxMDgyOTc0
OGFkMjdlYzhhODY2N2E0OWQ0NDgwZTVmNWYzYTguLmIwN2M5ZGUxYzNmZmI0YTgyYzA0ZmNmMWNj
MTVmYmE1NDYzN2ViNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1By
ZWRlZmluZWRDb2xvclNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
cmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJQcmVkZWZpbmVkQ29sb3JTcGFjZS5oIgogCi0jaW5jbHVkZSAiRGVz
dGluYXRpb25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSwyNiArMzUsMzMg
QEAgRGVzdGluYXRpb25Db2xvclNwYWNlIHRvRGVzdGluYXRpb25Db2xvclNwYWNlKFByZWRlZmlu
ZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CiAg
ICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCOwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZ
X1AzKQogICAgIGNhc2UgUHJlZGVmaW5lZENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAg
cmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzKCk7CisgICAgICAgIHJldHVy
biBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzsKICNlbmRpZgogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKTsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwogfQogCi1P
cHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCitPcHRpb25hbDxQcmVkZWZpbmVk
Q29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKIHsKLSAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSkKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjoKICAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNl
OjpTUkdCOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikK
KyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9ESVNQTEFZX1AzKQotICAgIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6RGlzcGxheVAzKCkpCisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3Bs
YXlQMzoKICAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNlOjpEaXNwbGF5UDM7CiAj
ZW5kaWYKKyAgICB9CiAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
cmVkZWZpbmVkQ29sb3JTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVm
aW5lZENvbG9yU3BhY2UuaAppbmRleCAyYTUzYjA1MzJkNDJhM2MyOWYyMzc3YjA5YjdiYjAwMDFk
Zjk3YzQ2Li41MjI3MjNhNjI0NjM4NDA1YTU1NDhlMDM4MGZhYWI5MTA0ZDYyNGFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgKQEAg
LTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U7CitlbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7
CiAKIGVudW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2UgewogICAgIFNSR0IKQEAgLTQwLDcg
KzQwLDcgQEAgZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiB9OwogCiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoUHJlZGVmaW5lZENvbG9yU3Bh
Y2UpOwotT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3Bh
Y2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CitPcHRpb25hbDxQcmVkZWZpbmVkQ29s
b3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOwog
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYTBiNjc5ZTdmMjhiMWIxZTRhOGVmMmFiOGUxNzE1
MGMwOWY0ZWY2NS4uMzljMzJlODQ0OWE2YjhkNDBmYWJhZjA0ZmU5MDZjMGM1NDIwYjBjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKQEAgLTc2MjMsNyArNzYyMyw3IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihjb25z
dCBJCiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQyMyk6IFNob3VsZCB0aGlzIEltYWdlQnVm
ZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkPwotICAgIGF1dG8gdGVtcCA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
YXV0byB0ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NF
UlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50LmNwcAppbmRleCBmN2QzYWE2NzdkYTE1Nzg5MzU0YWM5ZmJjYzIxNTZhZDA5ZmQ3YWU2Li4y
YjQxMmEzYTlhNmY3N2RkYTA2MDMxMmRkZjQxMDQyYzMwZTJjYTg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50LmNwcApAQCAtNDE4LDcgKzQxOCw3IEBAIFJlZlB0cjxJbWFn
ZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNr
UmVwcmVzZW50YXRpCiAgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBJbnRSZWN0KEludFBvaW50
KCksIGxheWVyLT5zaXplKCkpOwogCiAgICAgLy8gRklYTUUgKDE0OTQyMik6IFRoaXMgYnVmZmVy
IHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNWYyMGIzYzc0YWY5NjliNTc5NDkxNWRhNmEwYzU4ZDA0NDRkYmJiMy4uMGZlZDFm
YjJiYjNkYTVkM2EyMDFjN2ZjYTFiNTA4ZDE3NDdjODg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJ
bnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQog
ICAgICAgICAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC0+
Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZElt
YWdlLT5pbWFnZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZSAhPSAmSW1h
Z2U6Om51bGxJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
ICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwg
RmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1
ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTYz
LDcgKzExNjMsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRl
RGF0YVZhcmlhbnQgZGF0YSkKIAogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZp
ZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9IZWln
aHQgPSB2aWRlb0VsZW1lbnQtPnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRl
b0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgIGlmIChpbWFn
ZUJ1ZmZlcikgewogICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudC0+cGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoaW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVv
V2lkdGgsIHZpZGVvSGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVm
ZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgaW50IElu
c3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAg
ICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBjc3NJbWFnZVZhbHVlLT5pbWFnZSgp
KSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsK
ICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0gJkltYWdlOjpudWxsSW1hZ2Uo
KSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwg
MCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAg
UmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJy
YXlGb3JDYW52YXNQYXR0ZXJuKGNvbnMKIHsKICAgICBhdXRvJiB0aWxlSW1hZ2UgPSBjYW52YXNQ
YXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2UoKTsKICAgICBGbG9hdFJlY3QgcmVjdCA9IHsgeyB9
LCB0aWxlSW1hZ2Uuc2l6ZSgpIH07Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCku
ZHJhd05hdGl2ZUltYWdlKHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7
CiAKICAgICBTdHJpbmcgcmVwZWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGJkMDM0OGNh
OGZhYjg2N2I4ZDE0N2RlMTlhOWFmNDM2ZDYyY2U0ODUuLmVjMjQ3NmE5Nzk0MmY4MDY5NWQ2ZDAw
N2RjOTRjMmY2YzBhMjhmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTUyOSw3ICs1Mjks
NyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wgaGlk
ZGVuVW50aWxNb3VzZU1vdmVzKQogICAgIG1fY2xpZW50LnNldEN1cnNvckhpZGRlblVudGlsTW91
c2VNb3ZlcyhoaWRkZW5VbnRpbE1vdXNlTW92ZXMpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+
IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBDaHJvbWU6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0KSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihz
aXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IGFiNTE2NjU4ZDc4MDEwMGI3
MDkxZTQxZjRiMWU1YWQyY2IzN2NhODMuLmY3NDZlMDIxOTVhNjU2OGYzZTNmM2U5ZWIzMzNhNWQy
ZWMxYTYxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRD
dXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVu
ZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVO
QUJMRShXRUJHTCkKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYjZkOTFhODMzMTdlMjIyYzlj
MmIxN2IxNjhjMzA2ODg5ZDQ2NmIxMy4uMWZkN2IwOGU3N2ExNmE4ZDc3NDNhYjEzZjdmNzIxZGFi
ZDA5YjU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zMzksNyArMzM5LDcg
QEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9y
eSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwg
ZmxvYXQsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
aW5kZXggMjgzMTQyMTExNDEzN2VjMWViNzAzMmM1YmI4OTk5MTc1MDgyNGJiMC4uZmMyODA0YTQ1
MjMxMzIxMTNiNjYzZDc2NmQ4NWViMjBhZmJhNmY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0
JiBpbWFnZQogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRXaXRoSW50ZWdy
YWxTY2FsZUZhY3RvcikKICAgICAgICAgc2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7
CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3IsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCBzY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1p
bWFnZVJlY3QueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9y
U2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCmlu
ZGV4IDFiMjI4YzY2NjA0MTkwMTZhNzA0NTI0YWI0NzljNDk3YjA2ZjZkYWUuLjhmMTZjMGU5NmQ0
ZmE4NWE3NGYwMDg3YjA4N2ZhZDE2OTE3N2M1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29sb3JTYW1wbGVyLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8
ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYgZG9jdW1lbnQsIEludFBvaW50JiYgbG9jYXRp
b24pCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAot
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6
ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIo
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBzbmFwc2hvdC0+bG9n
aWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xl
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCmlu
ZGV4IDQ3MzdjZGFhODUwNTc5NWJkY2QzZGZlMTY4MmQ3OTNkYThlNDZlYjkuLjI5NTJjOWYyNzkz
OWE4ZDM2MTFmNmIyNWI3NWNkMjIwMzU0MmQzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbnNvbGVDbGllbnQuY3BwCkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNs
aWVudDo6c2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBSZWYKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IGlt
YWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFn
ZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQ
b2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgfQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6
OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVm
CiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiB2aWRlb0VsZW1lbnQgPSBkb3duY2FzdDxI
VE1MVmlkZW9FbGVtZW50Pigqbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGgoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHZpZGVvSGVpZ2h0ID0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KHNuYXBzaG90LT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAw
LCB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAjZW5k
aWYKQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZgogICAgICAgICAg
ICAgdGFyZ2V0ID0gcG9zc2libGVUYXJnZXQ7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkpIHsKICAgICAgICAgICAgICAg
ICBhdXRvIHNvdXJjZVNpemUgPSBpbWFnZURhdGEtPnNpemUoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6ZSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpKSB7CiAgICAgICAgICAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdChJbnRQ
b2ludCgpLCBzb3VyY2VTaXplKTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPnB1
dFBpeGVsQnVmZmVyKGltYWdlRGF0YS0+cGl4ZWxCdWZmZXIoKSwgc291cmNlUmVjdCk7CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9w
bmciX3MsIFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCmluZGV4IDBlYWFlMGE1MmY5Y2FjNzI0OTMzNWUxNzVkNzJi
NDE0YjdjMmRiZjQuLmM3YTk4NGZlYWJjMzkyMzg0Njg4M2YzNDg3Y2JjYzRiMDA2MjE4YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKQEAgLTMxLDEwICszMSwxMCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3I7Ci1jbGFzcyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVp
bnQ4X3Q7CitlbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiBlbnVt
IGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogZW51bSBjbGFzcyBSZW5kZXJpbmdQdXJwb3Nl
IDogdWludDhfdDsKIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRQ
b2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4o
Y29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBS
ZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOwogCiAjaWYgRU5BQkxFKFdFQkdM
KQogICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAppbmRleCBkZWU0MWI5NzFhNzUx
YzY4YjE5MDk0NTVlNTk2ZGJlYjRkYjhhOGY2Li40YTRmNmM3MmI1NGEyZTZjNTQ2MmFhNDM2NmI3
MWI2N2Q4MmUzNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgK
QEAgLTUzLDcgKzUzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpDR0NvbG9yU3Bh
Y2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGVzdGluYXRpb25Db2xvclNw
YWNlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgV2lkZ2V0OwpA
QCAtNjksNyArNjgsNiBAQCB1c2luZyBJT1JlZ2lzdHJ5R1BVSUQgPSBpbnQ2NF90OyAvLyBHbG9i
YWwgSU9LaXQgSS9PIHJlZ2lzdHJ5SUQgdGhhdCBjYW4gbWF0Y2ggYQogaW50IHNjcmVlbkRlcHRo
KFdpZGdldCopOwogaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopOwogYm9vbCBz
Y3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0Kik7Ci1XRUJDT1JFX0VYUE9SVCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqID0gbnVsbHB0cik7CiAKIGJvb2wgc2Ny
ZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKIApAQCAtMTAyLDYgKzEwMCwxMCBAQCBXRUJDT1JFX0VY
UE9SVCBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShXaWRnZXQqID0gbnVsbHB0
cik7CiBjb25zdGV4cHIgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZ2V0
KiA9IG51bGxwdHIpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIFVTRShDRykKK1dF
QkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBu
dWxscHRyKTsKKyNlbmRpZgorCiBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllczsKIHN0cnVjdCBTY3Jl
ZW5EYXRhOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVu
UHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5o
CmluZGV4IDg4Yjc1NGQ4MWViNjY3YThjYWE3NTE0OTU5ODQzZWU4ZWNlNzE2OGEuLjNlMmZlZjBi
Mjc0ZjYwOGVlMWQ1ZTA0NjRmMWI4MGFjZWVlMjQwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CkBAIC0zMywxMiArMzIsMTQgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3R5cGVkZWYgc3RydWN0IENHQ29sb3JT
cGFjZSAqQ0dDb2xvclNwYWNlUmVmOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBT
Y3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdDsKICAgICBGbG9h
dFJlY3Qgc2NyZWVuUmVjdDsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CisgICAgUmV0YWluUHRyPENHQ29sb3JT
cGFjZVJlZj4gY29sb3JTcGFjZTsKICAgICBpbnQgc2NyZWVuRGVwdGggeyAwIH07CiAgICAgaW50
IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IHsgMCB9OwogICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNF
eHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKQEAgLTU1LDEyICs1NiwxMyBAQCBzdHJ1Y3QgU2NyZWVu
RGF0YSB7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAjZW5kaWYKIAorICAgIGVudW0g
Y2xhc3MgQ29sb3JTcGFjZVR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmFtZSwgRGF0YSB9OwogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2NyZWVuRGF0YT4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKLXVzaW5nIFNjcmVlbkRhdGFNYXAgPSBIYXNoTWFwPFBsYXRm
b3JtRGlzcGxheUlELCBTY3JlZW5EYXRhPjsKLQordHlwZWRlZiBIYXNoTWFwPFBsYXRmb3JtRGlz
cGxheUlELCBTY3JlZW5EYXRhPiBTY3JlZW5EYXRhTWFwOworICAgIAogc3RydWN0IFNjcmVlblBy
b3BlcnRpZXMgewogICAgIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlEaXNwbGF5SUQgeyAwIH07
CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwpAQCAtNzIsNyArNzQsOCBAQCBzdHJ1
Y3QgU2NyZWVuUHJvcGVydGllcyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTY3Jl
ZW5Qcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNv
ZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQgPDwgc2NyZWVuRGF0YU1hcDsKKyAgICBlbmNvZGVyIDw8
IHByaW1hcnlEaXNwbGF5SUQ7CisgICAgZW5jb2RlciA8PCBzY3JlZW5EYXRhTWFwOwogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTQsNyArOTcsNyBAQCBPcHRpb25hbDxTY3JlZW5Q
cm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0aWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNjcmVlbkRhdGE6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBz
Y3JlZW5SZWN0IDw8IGNvbG9yU3BhY2UgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKKyAgICBlbmNvZGVy
IDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBzY3JlZW5EZXB0aCA8PCBz
Y3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPDwg
c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1Jhbmdl
OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgc2NyZWVuSXNNb25vY2hyb21l
IDw8IGRpc3BsYXlNYXNrIDw8IGdwdUlEIDw8IHByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGU7CkBA
IC0xMDMsNiArMTA2LDI4IEBAIHZvaWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGVuY29kZXIgPDwgc2NhbGVGYWN0b3I7CiAjZW5kaWYKKworICAgIGlmIChjb2xvclNwYWNlKSB7
CisgICAgICAgIC8vIFRyeSB0byBlbmNvZGUgdGhlIG5hbWUuCisgICAgICAgIGlmIChhdXRvIG5h
bWUgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNvcHlOYW1lKGNvbG9yU3BhY2UuZ2V0KCkpKSkgewor
ICAgICAgICAgICAgZW5jb2RlciA8PCBDb2xvclNwYWNlVHlwZTo6TmFtZTsKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgU3RyaW5nKG5hbWUuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gRmFpbGluZyB0aGF0LCBqdXN0IGVuY29kZSB0aGUgSUNDIGRh
dGEuCisgICAgICAgIGlmIChhdXRvIHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VD
b3B5SUNDRGF0YShjb2xvclNwYWNlLmdldCgpKSkpIHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBpY2NEYXRhOworICAgICAgICAgICAgaWNjRGF0YS5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0
cihwcm9maWxlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChwcm9maWxlRGF0YS5nZXQoKSkp
OworCisgICAgICAgICAgICBlbmNvZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpEYXRhOworICAgICAg
ICAgICAgZW5jb2RlciA8PCBpY2NEYXRhOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gVGhlIGNvbG9yIHNwYWNlIHdhcyBudWxsIG9yIGZhaWxlZCB0byBi
ZSBlbmNvZGVkLgorICAgIGVuY29kZXIgPDwgQ29sb3JTcGFjZVR5cGU6Ok5vbmU7CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0xMTgsMTEgKzE0Myw2IEBAIE9wdGlvbmFsPFNjcmVl
bkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghc2Ny
ZWVuUmVjdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPERl
c3RpbmF0aW9uQ29sb3JTcGFjZT4gc2NyZWVuQ29sb3JTcGFjZTsKLSAgICBkZWNvZGVyID4+IHNj
cmVlbkNvbG9yU3BhY2U7Ci0gICAgaWYgKCFzY3JlZW5Db2xvclNwYWNlKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCiAgICAgT3B0aW9uYWw8aW50PiBzY3JlZW5EZXB0aDsKICAgICBk
ZWNvZGVyID4+IHNjcmVlbkRlcHRoOwogICAgIGlmICghc2NyZWVuRGVwdGgpCkBAIC0xNzcsMTAg
KzE5Nyw0MSBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCisgICAg
Q29sb3JTcGFjZVR5cGUgZGF0YVR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhVHlw
ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBSZXRhaW5QdHI8Q0dDb2xv
clNwYWNlUmVmPiBjZ0NvbG9yU3BhY2U7CisgICAgc3dpdGNoIChkYXRhVHlwZSkgeworICAgIGNh
c2UgQ29sb3JTcGFjZVR5cGU6Ok5vbmU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29sb3JT
cGFjZVR5cGU6Ok5hbWU6IHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2xvclNwYWNlTmFt
ZTsKKyAgICAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlTmFtZTsKKyAgICAgICAgQVNTRVJUKGNv
bG9yU3BhY2VOYW1lKTsKKyAgICAgICAgaWYgKCFjb2xvclNwYWNlTmFtZSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgY2dDb2xvclNwYWNlID0gYWRvcHRDRihD
R0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShjb2xvclNwYWNlTmFtZS0+Y3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDb2xvclNwYWNlVHlw
ZTo6RGF0YTogeworICAgICAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGljY0RhdGE7Cisg
ICAgICAgIGRlY29kZXIgPj4gaWNjRGF0YTsKKyAgICAgICAgQVNTRVJUKGljY0RhdGEpOworICAg
ICAgICBpZiAoIWljY0RhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIGF1dG8gY29sb3JTcGFjZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBpY2NEYXRhLT5kYXRhKCksIGljY0RhdGEtPnNpemUoKSkpOworICAgICAg
ICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NEYXRhKGNv
bG9yU3BhY2VEYXRhLmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKICAg
ICByZXR1cm4geyB7CiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLAogICAg
ICAgICBXVEZNb3ZlKCpzY3JlZW5SZWN0KSwKLSAgICAgICAgV1RGTW92ZSgqc2NyZWVuQ29sb3JT
cGFjZSksCisgICAgICAgIFdURk1vdmUoY2dDb2xvclNwYWNlKSwKICAgICAgICAgV1RGTW92ZSgq
c2NyZWVuRGVwdGgpLAogICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCks
CiAgICAgICAgIFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCkBAIC0xOTks
MyArMjUwLDE2IEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcmVlbkRhdGE6
OkNvbG9yU3BhY2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGUsCisgICAgICAgIFdlYkNvcmU6
OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBlOjpOb25lLAorICAgICAgICBXZWJDb3JlOjpTY3Jl
ZW5EYXRhOjpDb2xvclNwYWNlVHlwZTo6TmFtZSwKKyAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0
YTo6Q29sb3JTcGFjZVR5cGU6OkRhdGEKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAK
aW5kZXggNzY0NGI0NzUwMGFjYzMxYjk4YzRhMTA4ZWJkMmI1Y2Q3MGNmNDQ2NC4uODg0YzM3MmUw
MjQ5ZmNkZTY5YjY2OTIyOTUyY2NiZTYxNWEzZDljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoYm9vbCByCiAgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1dG8g
Y29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVjdGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0ZWRT
aXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IGltYWdlOwogCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogICAg
IH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVj
dC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CisgICAgICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5k
ZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
Y3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKaW5kZXggODVlNmQ3OTJhODY5
MGY3YjQxNTdmMjdkY2I0ODA1M2RlZjEzNTZlYi4uNWE5YTQyYjE0NjBkYmUzZDVjNjhkZmY1MzJh
YjI0ZGRjNzZkYWRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gQ29sb3I6
OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKENvbG9yU3BhY2Ugb3V0cHV0CiAgICAgcmV0
dXJuIGNvbnZlckNvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91
dHB1dENvbG9yU3BhY2UpOwogfQogCi1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0
b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IG91dHB1dENvbG9yU3BhY2UpIGNvbnN0CitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9y
Ojp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3V0
cHV0Q29sb3JTcGFjZSkgY29uc3QKIHsKICAgICBhdXRvIFtpbnB1dENvbG9yU3BhY2UsIGNvbXBv
bmVudHNdID0gY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKTsKICAgICByZXR1cm4gY29udmVyQ29s
b3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFjZSwgY29tcG9uZW50cywgb3V0cHV0Q29sb3JTcGFj
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAppbmRleCA2ZTA2MDJl
M2FlYTZlMzlhODY0ZTg4MTMzMDVhZGY4OTIyOWRjMzgwLi4zODA5NTBlYmRiZTNmYTI1ZGFkODY5
MjViZGFlNTljN2M3OGVlMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNp
bmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKLSNpbmNs
dWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KQEAg
LTEyMiw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8
VD4gdG9TUkdCQUxvc3N5KCkgY29uc3QgeyByZXR1cm4gdG9Db2xvclR5cGVMb3NzeTxTUkdCQTxU
Pj4oKTsgfQogCiAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50
c0luQ29sb3JTcGFjZShDb2xvclNwYWNlKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8Zmxv
YXQsIDQ+IHRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYpIGNvbnN0OworICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNv
bXBvbmVudHNJbkNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBjb25zdDsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQsIDQ+PiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNvbnN0OwogCkBAIC0yNjgsNyArMjY3
LDYgQEAgYm9vbCBvdXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZW1hbnRpY0NvbG9y
KGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKTsKIAogI2lmIFVTRShDRykKIFdFQkNPUkVfRVhQ
T1JUIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBP
UlQgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVu
dHMoQ29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJik7CiAjZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAppbmRl
eCA5M2I5OTk0ZGY5MWMzZmZjZTEwZDc3MmQwZGUyNTUzZmQ2MmQ3YWE2Li5iZjJkMmZlNzI3M2Y3
ZTIxZjdhM2M4YjhjMGIwZWMyNTYxNmQ2ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKQEAgLTI2LDkgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKIAotI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgotI2luY2x1ZGUgIkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTMyMCwyMSArMzE4LDE4IEBAIENvbG9yQ29tcG9uZW50czxmbG9h
dCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNlLCBD
b2xvCiAgICAgfSk7CiB9CiAKLUNvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JD
b21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IG91dHB1dENvbG9yU3BhY2UpCitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9y
Q29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1
dENvbG9yU3BhY2UpCiB7Ci0jaWYgVVNFKENHKQotICAgIHJldHVybiBwbGF0Zm9ybUNvbnZlcnRD
b2xvckNvbXBvbmVudHMoaW5wdXRDb2xvclNwYWNlLCBpbnB1dENvbG9yQ29tcG9uZW50cywgb3V0
cHV0Q29sb3JTcGFjZSk7Ci0jZWxzZQogICAgIHJldHVybiBjYWxsV2l0aENvbG9yVHlwZShpbnB1
dENvbG9yQ29tcG9uZW50cywgaW5wdXRDb2xvclNwYWNlLCBbb3V0cHV0Q29sb3JTcGFjZV0gKGNv
bnN0IGF1dG8mIGlucHV0Q29sb3IpIHsKLSAgICAgICAgc3dpdGNoIChvdXRwdXRDb2xvclNwYWNl
LnBsYXRmb3JtQ29sb3JTcGFjZSgpKSB7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNl
OjpOYW1lOjpTUkdCOgorICAgICAgICBzd2l0Y2ggKG91dHB1dENvbG9yU3BhY2UpIHsKKyAgICAg
ICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6CiAgICAgICAgICAgICByZXR1cm4g
YXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikp
OwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAg
ICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0I6CisgICAgICAgIGNh
c2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgogICAgICAgICAgICAgcmV0dXJu
IGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxMaW5lYXJTUkdCQTxmbG9hdD4+KGlucHV0
Q29sb3IpKTsKICNlbmRpZgogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQ
TEFZX1AzKQotICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6RGlzcGxheVAz
OgorICAgICAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgogICAgICAg
ICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxEaXNwbGF5UDM8Zmxv
YXQ+PihpbnB1dENvbG9yKSk7CiAjZW5kaWYKICAgICAgICAgfQpAQCAtMzQyLDcgKzMzNyw2IEBA
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9yU3Bh
Y2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0
Pj4oaW5wdXRDb2xvcikpOwogICAgIH0pOwotI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252
ZXJzaW9uLmgKaW5kZXggMWRlYWEzMzYzNWFjNjRmMDc4ODYzZjc2MWM2MmQwMDQ0MWM3ZTNjNC4u
OTQwODZmNzI4ZmM2MTVjMWQwNDRhN2NjMjc0MTc4NGE3MmI1YTQzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgKQEAgLTI5LDE2
ICsyOSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTsKLQogZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3Mg
RGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIAogLy8gQ29udmVyc2lvbiBmdW5jdGlv
biBmb3IgdHlwZWQgY29sb3JzLgogdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0LCB0eXBlbmFtZSBJ
bnB1dD4gT3V0cHV0IGNvbnZlcnRDb2xvcihjb25zdCBJbnB1dCYgY29sb3IpOwogCiAvLyBDb252
ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgcmF3IGNvbG9yIGNvbXBvbmVudHMgd2l0aCBhc3NvY2lhdGVk
IGNvbG9yIHNwYWNlcy4KIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21w
b25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBDb2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOwot
Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFj
ZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNv
bXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSk7
CitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNw
YWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9y
Q29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOwogCiAK
IC8vIEFsbCBjb2xvciB0eXBlcywgb3RoZXIgdGhhbiBYWVpBIG9yIHRob3NlIGluaGVyaXRpbmcg
ZnJvbSBSR0JUeXBlLCBtdXN0IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAppbmRleCBlNTAwMzk2YWY1N2VhMThmMzQ5MzU1Yjgw
NzA3NmY2MDFlYzVkNmJmLi40Yjg2Y2VkMDVlMzAyNGM3MGIwMTlkZTUwY2I3MjgxODEzNGEwYzJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNw
cApAQCAtNjQsNCArNjQsMjQgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogICAgIHJldHVybiB0czsKIH0KIAorVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UpCit7CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAgICAgYnJlYWs7
CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorICAgIGNh
c2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgorICAgICAgICB0cyA8PCAiTGlu
ZWFyU1JHQiI7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkRpc3BsYXlQMzoKKyAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CisgICAgICAgIGJyZWFrOwor
I2VuZGlmCisgICAgfQorICAgIHJldHVybiB0czsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCmluZGV4IDc3NjNjZDA0MWI4OWViZTU0YjQw
YjIwMTE4ZTk0NWYwODU4NGJhZWQuLjhkNGFiZjdmMGQxMGI4MDU5YmIwNGExMWM0YTM4NDc5NmJi
NWU0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmgKQEAgLTI4LDcgKzI4LDEwIEBACiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgogI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRTdHJlYW07Cit9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsNyArNDcsMTggQEAgZW51bSBjbGFzcyBDb2xvclNw
YWNlIDogdWludDhfdCB7CiAgICAgWFlaX0Q1MCwKIH07CiAKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOworZW51bSBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90IHsKKyAgICBTUkdCCisjaWYgRU5BQkxFKERF
U1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorICAgICwgTGluZWFyU1JHQgorI2Vu
ZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAg
LCBEaXNwbGF5UDMKKyNlbmRpZgorfTsKKworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOworV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSk7CiAKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvclNwYWNl
TWFwcGluZzsKQEAgLTg4LDYgKzEwMiwyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBGdW5jdG9yPiBjb25zdGV4cHIgZGVjbHR5cGUoYXV0bykgY2FsbFdpdGhDb2xvclR5cAogICAg
IHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VG
cm9tQ29tcG9uZW50czxTUkdCQTxUPj4oY29tcG9uZW50cykpOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBjb25zdGV4cHIgZGVjbHR5cGUoYXV0bykgY2FsbFdp
dGhDb2xvclR5cGUoY29uc3QgQ29sb3JDb21wb25lbnRzPFQsIDQ+JiBjb21wb25lbnRzLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3RvciYmIGZ1bmN0b3IpCit7CisgICAg
c3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0I6CisgICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVu
Y3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTxUPj4oY29tcG9uZW50cykpOworI2lmIEVO
QUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICBjYXNlIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tl
KHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPExpbmVh
clNSR0JBPFQ+Pihjb21wb25lbnRzKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05f
Q09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgorICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0
b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8RGlzcGxheVAzPFQ+Pihjb21wb25lbnRz
KSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNv
bXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKK30KKwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKQEAgLTEwOCw0ICsxNDEsMTcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpDb2xvclNwYWNlPiB7CiAgICAgPjsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlLAorICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IKKyNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgICAgICwgV2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCCisjZW5kaWYKKyNpZiBFTkFC
TEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICAgICAgLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMworI2VuZGlmCisgICAgPjsKK307CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaAppbmRleCBlMmUyYzQ0ZDZlMjIxM2JmMWRjZjQ1OTlhNTczZWMzZTYwNWM3
MjNiLi4zYmZjYTliNjVhNWU1YWM0ODMzOTZkMGRlNGMxMTBkZmJmMGEyZmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZl
ci5oCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xh
c3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZl
ciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJU
eXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFy
Z3VtZW50cykKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAg
IGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0
byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVm
ZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1
bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4IH07CisgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVm
ZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tl
bmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2Vu
ZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCisgICAgdm9pZCB0cmFuc2Zv
cm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAg
IGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBlYjYz
MzVkMTQ0NWNiMzZlMDE1YjEwMjA2ZTI5ZDc3YmFhMmM0NDIzLi4yYmIyYjc4ZGYwMGM0MTlkY2Uw
NjkxODU1NzFlNDcwNGM4YmZiMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmwKIAogdm9pZCBDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCks
IGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOWJjMjczMDcwZDFlNTVkNjQwNjcwOTk2ZDlkODNkZWU3NDgwOTg1
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCi0KLSNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+Ci0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZUNH
LmgiCi0jaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNlbmRpZgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKQotewotI2lmIFVTRShDRykKLSAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlKHNSR0JDb2xvclNwYWNlUmVmKCkpOwotI2Vsc2UKLSAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlKFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQik7Ci0jZW5kaWYK
LX0KLQotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLURl
c3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKQot
ewotI2lmIFVTRShDRykKLSAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxpbmVhclNS
R0JDb2xvclNwYWNlUmVmKCkpOwotI2Vsc2UKLSAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNw
YWNlKFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGluZWFyU1JHQik7Ci0jZW5kaWYKLX0KLSNl
bmRpZgotCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi1E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKQot
ewotI2lmIFVTRShDRykKLSAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGRpc3BsYXlQ
M0NvbG9yU3BhY2VSZWYoKSk7Ci0jZWxzZQotICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UoUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpEaXNwbGF5UDMpOwotI2VuZGlmCi19Ci0jZW5k
aWYKLQotRGVzdGluYXRpb25Db2xvclNwYWNlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZv
cm1Db2xvclNwYWNlIHBsYXRmb3JtQ29sb3JTcGFjZSkKLSAgICA6IG1fcGxhdGZvcm1Db2xvclNw
YWNlIHsgV1RGTW92ZShwbGF0Zm9ybUNvbG9yU3BhY2UpIH0KLXsKLSNpZiBVU0UoQ0cpCi0gICAg
QVNTRVJUKG1fcGxhdGZvcm1Db2xvclNwYWNlKTsKLSNlbmRpZgotfQotCi1ib29sIG9wZXJhdG9y
PT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGIpCi17Ci0jaWYgVVNFKENHKQotICAgIHJldHVybiBDR0NvbG9yU3BhY2VFcXVhbFRv
Q29sb3JTcGFjZShhLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiLnBsYXRmb3JtQ29sb3JTcGFjZSgp
KTsKLSNlbHNlCi0gICAgcmV0dXJuIGEucGxhdGZvcm1Db2xvclNwYWNlKCkgPT0gYi5wbGF0Zm9y
bUNvbG9yU3BhY2UoKTsKLSNlbmRpZgotfQotCi1ib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIpCi17Ci0g
ICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQotewotICAg
IGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQotICAgICAg
ICB0cyA8PCAic1JHQiI7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVB
Ul9TUkdCKQotICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCKCkpCi0gICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKLSNlbmRpZgotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGVsc2UgaWYg
KGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkKLSAgICAg
ICAgdHMgPDwgIkRpc3BsYXlQMyI7Ci0jZW5kaWYKLSNpZiBVU0UoQ0cpCi0gICAgZWxzZSBpZiAo
YXV0byBkZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2ZpbGVEZXNj
cmlwdGlvbihjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCi0gICAgICAgIHRzIDw8
IFN0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiB0czsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0
aW5hdGlvbkNvbG9yU3BhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJhNGIx
MjE3MTA2MjE5NzdmZGM5YjEwMmJhMWMwMGM4ZDE2MDY2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3JTcGFj
ZS5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIHsK
LXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNl
IFNSR0IoKTsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBMaW5lYXJT
UkdCKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExB
WV9QMykKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNlIERp
c3BsYXlQMygpOwotI2VuZGlmCi0KLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xvclNwYWNlKTsKLSAgICBQbGF0Zm9ybUNvbG9yU3Bh
Y2VWYWx1ZSBwbGF0Zm9ybUNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtQ29s
b3JTcGFjZS5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVyJik7Ci0KLXByaXZh
dGU6Ci0gICAgUGxhdGZvcm1Db2xvclNwYWNlIG1fcGxhdGZvcm1Db2xvclNwYWNlOwotfTsKLQot
V0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOwotCi1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKLQotdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUNvbG9yU3BhY2U7Ci19
Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAg
ICBPcHRpb25hbDxQbGF0Zm9ybUNvbG9yU3BhY2U+IHBsYXRmb3JtQ29sb3JTcGFjZTsKLSAgICBk
ZWNvZGVyID4+IHBsYXRmb3JtQ29sb3JTcGFjZTsKLSAgICBpZiAoIXBsYXRmb3JtQ29sb3JTcGFj
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgeyBXVEZNb3ZlKCpwbGF0Zm9ybUNvbG9yU3BhY2UpIH07Ci19Ci0KLX0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNw
cAppbmRleCBmZWYzNmU1N2E2NWExNDg2OTBkYjMwYTJjMmE1Njg0ZDAwMGM4YWRjLi42ZTIxNjcx
MmY4ODdhY2VlMDEyMmIxYTViODA1ODAxZDIxZWY1ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcApAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhhc2ggPSBt
X2dyYWRpZW50LT5oYXNoKCk7CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRH
ZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0g
YWRqdXN0ZWRTaXplIHx8ICFhcmVFc3NlbnRpYWxseUVxdWFsKGRlc3RDb250ZXh0LnNjYWxlRmFj
dG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0b3IpKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7CisgICAgICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNp
emUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOwogICAgICAgICBp
ZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA5OTM2
Yjc3NTNiZWY5ZTUxMzExOWYyOTA2M2ZjMzVhZWVkYTY5MzJlLi44OTRiNWNjZTQyMTFkYjFkZmUy
ZDQ2Y2FmMGY2NWM0NDIxYTUxYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTg4Myw3ICs4ODMsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJlY3QpCiAgICAgY2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpDbGlw
VG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRy
YXdpbmdGdW5jdGlvbikKK0dyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVz
dWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlv
bjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
UmVzdWx0OjpTdWNjZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBmOTEwYjg2ODZkMTlmOTcwNWMwNDM3MjE4NTA2ZmFl
OTk1ZTI3MzUwLi5jNzhhZjdlMjVkZGI1NDE0M2NlYjU5YTExZmZmYzIzYWFhMzQ3MTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKICNpbmNsdWRlICJEYXNoQXJyYXkuaCIKLSNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTQxMCw3ICs0MTAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYpOwogCiAgICAgZW51bSBjbGFzcyBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgOiBib29s
IHsgU3VjY2VzcywgRmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlciB9OwotICAgIENsaXBUb0RyYXdp
bmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChH
cmFwaGljc0NvbnRleHQmKT4mJik7CisgICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpOwogICAg
IAogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggYjYy
ZmZiNDU0NWFlMjM1NmY3YzFmYmY3OGMwNDk0YjNjYWNjZTNiMS4uMDNiNDZkYjc0ZDM1OGUxZTNi
N2ZmM2JkNjUzM2VmMzRiZDM4NDc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMTA0LDcgKzEwNCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxl
KSA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGNsaXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJiBkcmF3aW5nRnVuY3Rpb24pID0gMDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlh
KGNvbnN0IE1lZGlhUGxheWVyJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDg4Y2U5NDI0OTczZjc4YmJmMTll
YjNmMWMzOTc4MDRlZDBlNzNmZjYuLjcwZDUzYzNkMGJhZDBhZGQ5YWJhOGYxMTc1MjI2ZTUxMTcx
MWQ0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNv
bnN0IGZsb2F0IE1heENsYW1wZWRMZW5ndGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1h
eENsYW1wZWRBcmVhID0gTWF4Q2xhbXBlZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKLVJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hv
dWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRy
PEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRV
c2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyOwogICAgIApAQCAtNTksNyArNTksNyBAQCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNv
bnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVm
ZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCkBAIC05
NSw3ICs5NSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjCiAgICAgcmV0dXJuIGltYWdlQnVm
ZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8
SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTExLDcgKzExMSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBjCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIElt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIH0KQEAgLTE2Nyw3ICsx
NjcsNyBAQCBJbnRTaXplIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBG
bG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQwogICAgIHJldHVybiBleHBhbmRlZEludFNp
emUoc2l6ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZl
cj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0
VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChyZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAwZDgyZWIzYWQ0MmQ5MjUyMzJl
MmIyODBhZWQ1NjZjM2UzMjI0YjAzLi4zODFmOGRiYmZlZTg1MmNlYWY4NDRlNDc2ZDkxYjlkYTI4
ODllYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKQEAgLTQ1LDEzICs0NSwxMyBAQCBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZTsKIGNsYXNz
IEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlQnVmZmVyPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgLy8gV2ls
bCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQ
aXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmlu
Z1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogCiAgICAgLy8g
Q3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQsIHdpdGgg
c3VpdGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRoZSBidWZmZXIgYW5kIHRoZW4g
aW50byB0aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
Jik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlv
bnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRl
ZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVl
ZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0g
Q29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9u
OjpObykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRp
YmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8g
dGhpcyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9CdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkg
PSAwOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRv
TWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZHN0Q29sb3JTcGFj
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZHN0Q29sb3JT
cGFjZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCwgUHJlc2Vy
dmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
b25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwCmluZGV4IGQ0NzA0YTY0NWE2MjQ3NzFjZWJkYjkwNDI1ZDQ1YzY5MGY4MTQxN2EuLmUyMjFl
MTlmMjZkYWE3YWJmYjE5MzAyYTEzZDE0YTI0ZTdkMDM0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAt
NTMsOCArNTMsNiBAQCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmQ6On5J
bWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7Ci0KIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1h
Z2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsKICAgICByZXR1cm4gY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKQEAgLTExNiwxNyArMTE0LDE1IEBA
IE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVy
KGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0CiAgICAgaWYgKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkg
IT0gc291cmNlUmVjdFNjYWxlZC5zaXplKCkpCiAgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCku
emVyb0ZpbGwoKTsKIAotICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2Ug
ewotICAgICAgICB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVs
Rm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAotICAgICAgICBieXRlc1BlclJvdygpLAotICAgICAg
ICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnko
KSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQKLSAgICB9
OworICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7CisgICAgc291cmNl
LmZvcm1hdCA9IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxG
b3JtYXQoKSwgY29sb3JTcGFjZSgpIH07CisgICAgc291cmNlLmJ5dGVzUGVyUm93ID0gYnl0ZXNQ
ZXJSb3coKTsKKyAgICBzb3VyY2Uucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRh
dGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNl
UmVjdENsaXBwZWQueCgpICogNDsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3
IGRlc3RpbmF0aW9uIHsKLSAgICAgICAgZGVzdGluYXRpb25Gb3JtYXQsCi0gICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPig0ICogc291cmNlUmVjdFNjYWxlZC53aWR0aCgpKSwKLSAgICAgICAg
cGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGlu
YXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNAotICAgIH07CisgICAg
UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKKyAgICBkZXN0aW5hdGlvbi5m
b3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9
IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7CisgICAgZGVzdGluYXRpb24ucm93cyA9IHBp
eGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0
aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7CiAKICAgICBjb252ZXJ0
SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7
CiAKQEAgLTE1MSwxNyArMTQ3LDE1IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhl
bEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYgc291cmNlUGl4ZWxCdWZmZXIsIGNvCiAgICAgZGVz
dGluYXRpb25SZWN0LmludGVyc2VjdChiYWNrZW5kUmVjdCgpKTsKICAgICBzb3VyY2VSZWN0Q2xp
cHBlZC5zZXRTaXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCi0gICAgQ29uc3RQaXhlbEJ1
ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZSB7Ci0gICAgICAgIHNvdXJjZVBpeGVsQnVmZmVyLmZv
cm1hdCgpLAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oNCAqIHNvdXJjZVBpeGVsQnVm
ZmVyLnNpemUoKS53aWR0aCgpKSwKLSAgICAgICAgc291cmNlUGl4ZWxCdWZmZXIuZGF0YSgpLmRh
dGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJj
ZVJlY3RDbGlwcGVkLngoKSAqIDQKLSAgICB9OwotCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9u
VmlldyBkZXN0aW5hdGlvbiB7Ci0gICAgICAgIHsgZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgcGl4
ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCi0gICAgICAgIGJ5dGVzUGVyUm93KCksCi0gICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRpb25SZWN0Lnko
KSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQKLSAg
ICB9OworICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7CisgICAgc291
cmNlLmZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpOworICAgIHNvdXJjZS5ieXRl
c1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKTsKKyAgICBzb3Vy
Y2Uucm93cyA9IHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xp
cHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0
OworCisgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKKyAgICBkZXN0
aW5hdGlvbi5mb3JtYXQgPSB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCks
IGNvbG9yU3BhY2UoKSB9OworICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJS
b3coKTsKKyAgICBkZXN0aW5hdGlvbi5yb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
ZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBk
ZXN0aW5hdGlvblJlY3QueCgpICogNDsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2Us
IGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXgg
MWJhOWEyZjQ3NDMxMjBkZDFkZjA3ZDJjZTU5MTkzYjI5MDI4NGRmZS4uYjgxMTY1ZTFiMTFlNmI4
OWVlYzM0OTMwZDE4ZTY1OGM2NGU4ODY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTI1LDcgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNp
bmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKQEAg
LTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsK
ICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5k
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBk
ZWZhdWx0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEludFNpemUgY2FsY3VsYXRlQmFj
a2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBz
aXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgdW5z
aWduZWQgYnl0ZXNQZXJSb3cpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSB7
IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpOwot
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1
dGlvbikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0ID0gMDsK
QEAgLTE0MCw3ICsxNDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBJbnRTaXplIGxvZ2ljYWxTaXpl
KCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9naWNhbFNpemUpOyB9CiAg
ICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJl
c29sdXRpb25TY2FsZTsgfQotICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CisgICAgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRl
cnMuY29sb3JTcGFjZTsgfQogICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVsRm9ybWF0OyB9CiAKICAgICBJbnRSZWN0IGxvZ2ljYWxS
ZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6
ZSgpKTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmNwcAppbmRleCA4ZGI0ZmEyN2JlNDVlYzE2M2I5Yzk1YjMzM2EwMTVmOTU1MzI1ZjJmLi41
ZmVlM2ZiNjEzMWM5N2MxMTI0NjY4YWQ5ZjNkYzliMzliZTQ4NGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBAIC00Miw5ICs0Miw2
IEBAIGJvb2wgUGl4ZWxCdWZmZXI6OnN1cHBvcnRlZFBpeGVsRm9ybWF0KFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0KQogICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OlJHQjEwQTg6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOwogfQogCiBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gUGl4ZWxC
dWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQs
IGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXIuaAppbmRleCBmNzU1Y2UxMDBhNzhiZmMzNjNiODg5NjgyZGFhZjZiMDE0
MTg4N2U4Li4zMTIzNjViZjM1MmU0M2ZkYWZiMDQ3M2RiYTNhNjlmMzQ1MTEwYzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bi5oIgotI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkNvbG9y
U3BhY2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3Jt
YXQuaCIKICNpbmNsdWRlICJQaXhlbEZvcm1hdC5oIgpAQCAtODcsMjEgKzg3LDE5IEBAIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gUGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PFBpeGVsQnVmZmVyRm9ybWF0PiBmb3JtYXQ7Ci0gICAgZGVjb2RlciA+PiBmb3JtYXQ7Ci0gICAg
aWYgKCFmb3JtYXQpCisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAg
IC8vIEZJWE1FOiBTdXBwb3J0IG5vbi04IGJpdCBmb3JtYXRzLgotICAgIGlmICghKGZvcm1hdC0+
cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC0+cGl4ZWxGb3JtYXQg
PT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBpZiAoIShmb3JtYXQucGl4ZWxGb3JtYXQgPT0g
UGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6
QkdSQTgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8SW50
U2l6ZT4gc2l6ZTsKLSAgICBkZWNvZGVyID4+IHNpemU7Ci0gICAgaWYgKCFzaXplKQorICAgIElu
dFNpemUgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byBjb21wdXRlZEJ1ZmZlclNpemUgPSBQaXhlbEJ1
ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUoKmZvcm1hdCwgKnNpemUpOworICAgIGF1dG8gY29tcHV0
ZWRCdWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6
ZSk7CiAgICAgaWYgKGNvbXB1dGVkQnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKQEAgLTEwOSw3ICsxMDcsNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdo
VG9Db250YWluPHVpbnQ4X3Q+KGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCi0gICAgYXV0byByZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2Rp
bmcoV1RGTW92ZSgqZm9ybWF0KSwgKnNpemUsIGJ1ZmZlclNpemUpOworICAgIGF1dG8gcmVzdWx0
ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGZvcm1hdCwgc2l6ZSwgYnVmZmVy
U2l6ZSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlckNvbnZlcnNpb24uY3BwCmluZGV4IDlhY2YzMDRkNzE5OTI0ZTFjOTkxZTMwNTE1ZjkzYTM2
NTM5YWIxNTEuLjllZTY3N2I0NDgzZmQ3MjQ2ZTI3NjhhMDE2MGFlNDkyZDdiMDI2NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVy
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXJDb252ZXJzaW9uLmNwcApAQCAtMjcsMTEgKzI3LDEyIEBACiAjaW5jbHVkZSAiUGl4ZWxCdWZm
ZXJDb252ZXJzaW9uLmgiCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0j
aW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQaXhlbEZvcm1hdC5oIgogCiAjaWYg
VVNFKEFDQ0VMRVJBVEUpICYmIFVTRShDRykKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKICNp
bmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KICNlbmRpZgogCkBAIC03MCw3ICs3MSw3
IEBAIHN0YXRpYyBpbmxpbmUgdkltYWdlX0NHSW1hZ2VGb3JtYXQgbWFrZVZJbWFnZUNHSW1hZ2VG
b3JtYXQoY29uc3QgUGl4ZWxCdWZmZXJGb3JtCiAKICAgICByZXN1bHQuYml0c1BlckNvbXBvbmVu
dCA9IGJpdHNQZXJDb21wb25lbnQ7CiAgICAgcmVzdWx0LmJpdHNQZXJQaXhlbCA9IGJpdHNQZXJQ
aXhlbDsKLSAgICByZXN1bHQuY29sb3JTcGFjZSA9IGZvcm1hdC5jb2xvclNwYWNlLnBsYXRmb3Jt
Q29sb3JTcGFjZSgpOworICAgIHJlc3VsdC5jb2xvclNwYWNlID0gY2FjaGVkQ0dDb2xvclNwYWNl
KGZvcm1hdC5jb2xvclNwYWNlKTsKICAgICByZXN1bHQuYml0bWFwSW5mbyA9IGJpdG1hcEluZm87
CiAgICAgcmVzdWx0LnZlcnNpb24gPSAwOwogICAgIHJlc3VsdC5kZWNvZGUgPSBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJG
b3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9y
bWF0LmgKaW5kZXggN2YyMDgzZTY1NzZlNGZjZTIxMWI4YWEyMDlkNDVkNTI4NzAyMWI4Ni4uOWMz
MzM1NjRjNTVkYTgzZDc3ZTQzMjU1Y2ZmYjU2YzczZWQwMjQzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRp
b24uaCIKLSNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJDb2xv
clNwYWNlLmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNTEsMjIgKzUxLDE5IEBAIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXJGb3JtYXQ6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhl
bEJ1ZmZlckZvcm1hdD4gUGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGFscGhhRm9ybWF0Owot
ICAgIGRlY29kZXIgPj4gYWxwaGFGb3JtYXQ7Ci0gICAgaWYgKCFhbHBoYUZvcm1hdCkKKyAgICBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYWxwaGFGb3JtYXQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OwotICAgIGRlY29kZXIgPj4gcGl4ZWxGb3Jt
YXQ7Ci0gICAgaWYgKCFwaXhlbEZvcm1hdCkKKyAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBpeGVsRm9ybWF0KSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JT
cGFjZTsKLSAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFjb2xvclNwYWNlKQor
ICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY29sb3JTcGFjZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBy
ZXR1cm4geyB7IFdURk1vdmUoKmFscGhhRm9ybWF0KSwgV1RGTW92ZSgqcGl4ZWxGb3JtYXQpLCBX
VEZNb3ZlKCpjb2xvclNwYWNlKSB9IH07CisgICAgcmV0dXJuIHsgeyBhbHBoYUZvcm1hdCwgcGl4
ZWxGb3JtYXQsIGNvbG9yU3BhY2UgfSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNvbG9yU3BhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzZmZiMzZmNTU2N2MxMWUxMjUxYWY5N2Y0ODFmZWQyNmU4OTJjMWMz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVT
RShDRykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVjdCBDR0NvbG9y
U3BhY2UqIENHQ29sb3JTcGFjZVJlZjsKLSNlbHNlCi0jaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMu
aD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLSNpZiBVU0UoQ0cpCi0KLXVzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZSA9IFJldGFpblB0
cjxDR0NvbG9yU3BhY2VSZWY+OwotdXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBDR0Nv
bG9yU3BhY2VSZWY7Ci0KLSNlbHNlCi0KLWNsYXNzIFBsYXRmb3JtQ29sb3JTcGFjZSB7Ci1wdWJs
aWM6Ci0gICAgZW51bSBjbGFzcyBOYW1lIDogdWludDhfdCB7Ci0gICAgICAgIFNSR0IKLSNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICwgTGlu
ZWFyU1JHQgotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BM
QVlfUDMpCi0gICAgICAgICwgRGlzcGxheVAzCi0jZW5kaWYKLSAgICB9OwotCi0gICAgUGxhdGZv
cm1Db2xvclNwYWNlKE5hbWUgbmFtZSkKLSAgICAgICAgOiBtX25hbWUgeyBuYW1lIH0KLSAgICB7
Ci0gICAgfQotCi0gICAgTmFtZSBnZXQoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLQotICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNw
YWNlPiBkZWNvZGUoRGVjb2RlciYpOwotCi1wcml2YXRlOgotICAgIE5hbWUgbV9uYW1lOwotCi19
OwotdXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5h
bWU7Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGxhdGZvcm1Db2xvclNwYWNlOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fbmFtZTsK
LX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNl
PiBQbGF0Zm9ybUNvbG9yU3BhY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9w
dGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4gbmFtZTsKLSAgICBkZWNvZGVyID4+IG5h
bWU7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
cmV0dXJuIHsgeyAqbmFtZSB9IH07Ci19Ci0KLSNlbmRpZgotCi19Ci0KLW5hbWVzcGFjZSBXVEYg
ewotCi0jaWYgIVVTRShDRykKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAotICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWUsCi0gICAgICAg
IFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQgotI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAgLCBXZWJDb3JlOjpQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgICAgICAsIFdlYkNvcmU6OlBsYXRm
b3JtQ29sb3JTcGFjZTo6TmFtZTo6RGlzcGxheVAzCi0jZW5kaWYKLSAgICA+OwotfTsKLQotI2Vu
ZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdURgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKaW5kZXggNTdjZjI5ZDBkNzdl
Njc4ODliZGNlZmQ0MDU4NTEyOWVkMTJhNDU1NS4uYTYzNTE0N2QwYmNhM2I3NmNlMTJkZjc2NDgy
NDhhM2RjODBiYWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgaW5s
aW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHRyYW5zZmVyQkdSQVBpeGVsQnVmZmVyVG9J
T1N1cmZhY2UoQ1ZQaQogICAgIH0KIAogICAgIEludFNpemUgc2l6ZSB7IHN0YXRpY19jYXN0PGlu
dD4oQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKSksIHN0YXRpY19jYXN0PGludD4o
Q1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikpIH07Ci0gICAgYXV0byBpb1N1cmZh
Y2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgSU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkEpOworICAgIGF1dG8gaW9TdXJmYWNlID0gIElPU3Vy
ZmFjZTo6Y3JlYXRlKHNpemUsIHNSR0JDb2xvclNwYWNlUmVmKCksIElPU3VyZmFjZTo6Rm9ybWF0
OjpCR1JBKTsKIAogICAgIElPU3VyZmFjZTo6TG9ja2VyIGxvY2soKmlvU3VyZmFjZSk7CiAgICAg
dkltYWdlX0J1ZmZlciBzcmM7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKE1lZGlhU2FtcGxlJiBz
YW1wbGUKICAgICAgICAgc3VyZmFjZSA9IGlvU3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0KIAot
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVW
aWRlb1NhbXBsZShzdXJmYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc2FtcGxl
LnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVv
TWlycm9yZWQoKSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1w
bGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBz
YW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBzYW1wbGUu
dmlkZW9NaXJyb3JlZCgpKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBs
ZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlQnVmZmVy
LCBNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biByb3RhdGlvbikKQEAgLTEyNCwxMCArMTI0LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVW
aWRlb1NhbXBsZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShDVlBpeGVsQnVmZmVyUmVmIGlt
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1lKSwg
cm90YXRpb24sIGZhbHNlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRl
b1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xvclNwYWNlUmVm
KCksIFdURk1vdmUocHJlc2VudGF0aW9uVGltZSksIHJvdGF0aW9uLCBmYWxzZSkpOwogfQogCi1S
ZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2Us
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGlt
ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCitS
ZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2Us
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBNZWRpYVRpbWUmJiB0aW1lLCBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKICAgICA6IG1faW9TdXJm
YWNlKFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgY29sb3JT
cGFjZSkpCiAgICAgLCBtX3JvdGF0aW9uKHJvdGF0aW9uKQogICAgICwgbV90aW1lKFdURk1vdmUo
dGltZSkpCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVv
U2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG8KIElPU3Vy
ZmFjZVJlZiBSZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFjZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2lvU3VyZmFjZSAmJiBtX3NlbmRSaWdodCkKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRl
b1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlz
KS0+bV9zZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgICAg
IGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9pb1N1cmZhY2UgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShjb25zdF9jYXN0PFJl
bW90ZVZpZGVvU2FtcGxlKj4odGhpcyktPm1fc2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYo
KSk7CiAKICAgICByZXR1cm4gbV9pb1N1cmZhY2UgPyBtX2lvU3VyZmFjZS0+c3VyZmFjZSgpIDog
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVZpZGVvU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVWaWRlb1NhbXBsZS5oCmluZGV4IDczNjFlNWU4YWY2NzA0MzljNDk3ZGU2OWExNmZmMzRi
ZjJjNTc1OGQuLmYyNTYxOTc2ZmYzNjAyYTJmMDFiN2FlNDY1MDBmYjVkYWQxZWFlMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1w
bGUuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmLCBNZWRpYVRpbWUmJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOworICAg
IFJlbW90ZVZpZGVvU2FtcGxlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmLCBNZWRpYVRp
bWUmJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RGOjpNYWNoU2Vu
ZFJpZ2h0IG1fc2VuZFJpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcAppbmRleCA3YTdmNjcwYTI4MTQyNDQzODUzNzcxOTcxZjM5MTc2NGYy
MTllMjYwLi4xZGY4MjA0MGRmMTE1ZWNhYzU5NmMyMzFjZjJmZDFlYjdiOGExMjA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtODUs
NyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsZWFyU2NyYXRjaEJ1ZmZlcigpOwogCiAgICAg
ICAgIC8vIFNoYWRvd0JsdXIgaXMgbm90IHVzZWQgd2l0aCBhY2NlbGVyYXRlZCBkcmF3aW5nLCBz
byBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVy
LgotICAgICAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyb3VuZGVkU2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyOwogICAgIH0KIApAQCAtNjA2LDcgKzYwNiw3
IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0CiAKIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RT
aGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0Um91
bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgTGF5ZXJJbWFnZVByb3BlcnRpZXMmIGxheWVy
SW1hZ2VQcm9wZXJ0aWVzLCBjb25zdCBEcmF3QnVmZmVyQ2FsbGJhY2smIGRyYXdCdWZmZXIpCiB7
Ci0gICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNp
emUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRl
ZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOwogICAgIGlmICghbGF5ZXJJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02
MzQsNyArNjM0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXQKIAogdm9pZCBTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0
LCBjb25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0
IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2Ug
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGll
cy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVy
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJv
cGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFs
YXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTcwNyw3ICs3MDcsNyBAQCB2b2lkIFNo
YWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSwgY29ucwogI2VuZGlmCiAKICAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpIHsK
LSAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVT
aXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRT
aGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb24KICNl
bmRpZgogCiAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGxheWVySW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICBpZiAo
IWxheWVySW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTA1LDcg
KzkwNSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcihJbWFnZUJ1ZmZlciYg
bGF5ZXJJbWFnZSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhCiAgICAgaWYgKG1fdHlwZSAhPSBCbHVy
U2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQg
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpS
R0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKKyAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CiAgICAgSW50
UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0ZVNpemUpOwogICAgIGF1dG8gbGF5ZXJE
YXRhID0gbGF5ZXJJbWFnZS5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGJsdXJSZWN0KTsKICAgICBp
ZiAoIWxheWVyRGF0YSkKQEAgLTkzNSw3ICs5MzUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdT
aGFkb3dMYXllcihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgSW50UmVj
dAogCiAgICAgYWRqdXN0Qmx1clJhZGl1cyh0cmFuc2Zvcm0pOwogCi0gICAgYXV0byBsYXllcklt
YWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3Bl
cnRpZXMtPmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8g
bGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1h
Z2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKaW5kZXggY2IwNGY3ZTQzZjk1YTFiYjRkMmQxYmZiYjY5YTU0YTFhZmFkOWRh
Yi4uNGIwODRkYzEyNDRiOGI5NGVmZjljMzZkZTUyYjE4NTA4M2I1MGEzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgd2lw
ZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBj
aGFyKiBwaXgKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBm
b3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9y
bWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKKyAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CiAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJ
bnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5j
cHAKaW5kZXggYWYyYTA0ODE3YmZkNGVkMGYyMDY3NzVhYzI4NjIyNDk5NzI1YWQ1YS4uZTI2MWVm
MzBlNjgzZGM5NThlN2YyYjllMTg0YjY1OTYyZjNmMzc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIEcKICAgICByZXR1cm4gQ2Fpcm86OlN0YXRlOjpyb3VuZFRvRGV2aWNlUGl4ZWxzKG1fcGxh
dGZvcm1Db250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggYWVkZTVkMmE3ZTk4ZGJiYmVhMjY3YWIwNTRj
MGRmZjE0MjU2Y2YyYi4uOTJhMWVlZTM5MDczYTI2ZTA5N2I5NmM3NDY1M2ZhNjE2ZjkyNjUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRl
OwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAg
ICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNv
bnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCBkMzdmYjY2MzczYWFjOTMyYTcxNDgy
NTM0ODVmMzM0OTExODY4NWQ0Li5jOWU3MDgwMTQ2YzdmMjMyNzI3ZDFhNDI3ZTExZTZiYzhkMDgx
OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC04OSwxOSArODks
MTkgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6Y2xpcFRvTWFzayhHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG8KICAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdl
QnVmZmVyKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCi12b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
Ojp0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgc3JjQ29s
b3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBkZXN0Q29sb3JTcGFjZSkKK3Zv
aWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29s
b3JTcGFjZSkKIHsKICAgICBpZiAoc3JjQ29sb3JTcGFjZSA9PSBkZXN0Q29sb3JTcGFjZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gb25seSBzUkdCIDwtPiBsaW5lYXJSR0IgYXJlIHN1cHBv
cnRlZCBhdCB0aGUgbW9tZW50Ci0gICAgaWYgKChzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6TGluZWFyU1JHQigpICYmIHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkpCi0gICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSAmJiBkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkpCisgICAgaWYgKChzcmNDb2xvclNwYWNlICE9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiAmJiBzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQikKKyAgICAgICAgfHwgKGRlc3RDb2xvclNwYWNlICE9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiAmJiBkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3BhcmFtZXRl
cnMuY29sb3JTcGFjZSA9IGRlc3RDb2xvclNwYWNlOwogCi0gICAgaWYgKGRlc3RDb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpKSB7CisgICAgaWYgKGRlc3RD
b2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQikgewogICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGxpbmVhclJnYkxVVCA9IFtd
IHsKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBhcnJheTsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgewpAQCAtMTEyLDcgKzExMiw3
IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzCiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAg
ICAgICAgIH0oKTsKICAgICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGxpbmVhclJn
YkxVVCk7Ci0gICAgfSBlbHNlIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSkgeworICAgIH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5
PHVpbnQ4X3QsIDI1Nj4gZGV2aWNlUmdiTFVUPSBbXSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5
PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgMjU2OyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCmluZGV4IGQ4MzA0
NDc3NTAyYzBjYTgxZWZmOGNjYjI3NDA1ZDU5ZmI5MmU5MmMuLmRhYWY5OWRlMWM3Y2UwMGIwZGE2
YzVjZTJkMDVkMGJkMmJlZDAxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzcmNDb2xv
clNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RDb2xvclNwYWNlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
IHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3Zl
cnJpZGU7CiAKICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlk
ZTsKICAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IGUzYTAxM2QxZGMyMWYx
MzZiODlhOTZjZjA3MDE2ODA3YTYyYjNlMmIuLjQ5NWZjNzA0MzhmZjQ4MmU0NjI2M2Q2OWM2OTk4
NTU1NTU0OTRmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yQ0cuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE0ICsyOSwxMyBA
QAogI2lmIFVTRShDRykKIAogI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgotI2luY2x1ZGUgIkRl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHBhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgorI2lu
Y2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTkyLDM4ICs5MSwzNCBAQCBD
b2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsK
IH0KIAotc3RhdGljIHN0ZDo6cGFpcjxDR0NvbG9yU3BhY2VSZWYsIENvbG9yQ29tcG9uZW50czxm
bG9hdCwgND4+IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVudHMoQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbXBvbmVudHMpCitzdGF0aWMgUmV0
YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewor
ICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENv
bXBvbmVudHMoKTsKKworICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVsbGFibGVDR0Nv
bG9yU3BhY2UoY29sb3JTcGFjZSk7CisKICAgICAvLyBTb21lIENHIHBvcnRzIGRvbid0IHN1cHBv
cnQgYWxsIHRoZSBjb2xvciBzcGFjZXMgcmVxdWlyZWQgYW5kIHJldHVybgogICAgIC8vIG51bGxw
dHIgZm9yIHVuc3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4gSW4gdGhvc2UgY2FzZXMsIHdlIGVhZ2Vy
bHkgY29udmVydAogICAgIC8vIHRoZSBjb2xvciBpbnRvIGVpdGhlciBleHRlbmRlZCBzUkdCIG9y
IG5vcm1hbCBzUkdCLCBpZiBleHRlbmRlZCBzUkdCIGlzCi0gICAgLy8gbm90IHN1cHBvcnRlZC4K
LQotICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoY29s
b3JTcGFjZSk7CisgICAgLy8gbm90IHN1cHBvcnRlZCwgYmVmb3JlIGNyZWF0aW5nIHRoZSBDR0Nv
bG9yUmVmLgogICAgIGlmICghY2dDb2xvclNwYWNlKSB7CiAjaWYgSEFWRShDT1JFX0dSQVBISUNT
X0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIGF1dG8gY29tcG9uZW50c0NvbnZl
cnRlZFRvRXh0ZW5kZWRTUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9y
U3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewotICAgICAgICAgICAgcmV0dXJuIGFzQ29s
b3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsK
KyAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSA9IGNhbGxXaXRoQ29s
b3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewor
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29s
b3IpOwogICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHsgZXh0ZW5kZWRTUkdCQ29sb3JTcGFj
ZVJlZigpLCBjb21wb25lbnRzQ29udmVydGVkVG9FeHRlbmRlZFNSR0JBIH07CisgICAgICAgIGNv
bXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvRXh0ZW5kZWRTUkdC
QSk7CisgICAgICAgIGNnQ29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsK
ICNlbHNlCi0gICAgICAgIGF1dG8gY29tcG9uZW50c0NvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0
aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3Ip
IHsKLSAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8U1JH
QkE8ZmxvYXQ+Pihjb2xvcikpOworICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9TUkdCQSA9
IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRv
JiBjb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+
KGNvbG9yKTsKICAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiB7IHNSR0JDb2xvclNwYWNlUmVm
KCksIGNvbXBvbmVudHNDb252ZXJ0ZWRUb1NSR0JBIH07CisgICAgICAgIGNvbXBvbmVudHMgPSBh
c0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEpOworICAgICAgICBjZ0NvbG9y
U3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwogI2VuZGlmCiAgICAgfQogCi0gICAgcmV0dXJu
IHsgY2dDb2xvclNwYWNlLCBjb21wb25lbnRzIH07Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8Q0dD
b2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgYXV0byBb
Y29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygp
OwotICAgIGF1dG8gW2NnQ29sb3JTcGFjZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10gPSBjb252
ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOwotICAg
IAotICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7Ci0g
ICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMsIGM0IH07CisgICAg
YXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOworICAgIENHRmxvYXQgY2dGbG9hdENvbXBv
bmVudHNbNF0geyByLCBnLCBiLCBhIH07CiAKICAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3Jl
YXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENvbXBvbmVudHMpKTsKIH0KQEAgLTE2NiwyNCArMTYx
LDYgQEAgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBy
ZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKS5nZXQoKTsKIH0KIAotQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1
dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVu
dHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKLXsKLSAg
ICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgb3B0aW1pemluZyB0aGlzIHRvIHVzZSB0aGUgYnVpbHRp
biBjb2xvciBjb252ZXJzaW9uIGNvZGUgZm9yIHN1cHBvcnRlZCBjb2xvciBzcGFjZXMuCi0KLSAg
ICBhdXRvIFtjZ0lucHV0Q29sb3JTcGFjZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10gPSBjb252
ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGlucHV0Q29sb3JTcGFjZSwgaW5wdXRDb2xvckNv
bXBvbmVudHMpOwotICAgIGlmIChjZ0lucHV0Q29sb3JTcGFjZSA9PSBvdXRwdXRDb2xvclNwYWNl
LnBsYXRmb3JtQ29sb3JTcGFjZSgpKQotICAgICAgICByZXR1cm4gY2dDb21wYXRpYmxlQ29tcG9u
ZW50czsKLQotICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVu
dHM7Ci0gICAgQ0dGbG9hdCBzb3VyY2VDb21wb25lbnRzWzRdIHsgYzEsIGMyLCBjMywgYzQgfTsK
LSAgICBDR0Zsb2F0IGRlc3RpbmF0aW9uQ29tcG9uZW50c1s0XSB7IH07Ci0KLSAgICBhdXRvIHRy
YW5zZm9ybSA9IGFkb3B0Q0YoQ0dDb2xvclRyYW5zZm9ybUNyZWF0ZShvdXRwdXRDb2xvclNwYWNl
LnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBudWxscHRyKSk7Ci0gICAgYXV0byByZXN1bHQgPSBDR0Nv
bG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyh0cmFuc2Zvcm0uZ2V0KCksIGNnSW5w
dXRDb2xvclNwYWNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBzb3VyY2VDb21wb25lbnRz
LCBkZXN0aW5hdGlvbkNvbXBvbmVudHMpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQpOwotICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVu
dHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzFdKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1syXSksIHN0YXRpY19jYXN0PGZs
b2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbM10pIH07Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVT
RShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JT
cGFjZUNHLmgKaW5kZXggZGI2MDQxMGU2ZDQ3M2FjYTdlYTdhMTk0Y2M3OGM5NjRjOThiYTM3My4u
MjQ4ZTk5MjFiZGE5NmZlZDMyYmVjN2JhNGZjM2QzZDhlODU3YzkyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKQEAgLTExOSw0
ICsxMTksMjMgQEAgc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkTnVsbGFibGVD
R0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCisvLyBOT1RFOiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGZvciAqZGVzdGluYXRpb24qIGNv
bG9yIHNwYWNlcyB3aG9zZSBjYWxsZXJzIGFsd2F5cyBleHBlY3QgYSBub24tbnVsbCBjb2xvciBz
cGFjZSwgdGhpcyBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBub24tbnVsbCwgdW5s
aWtlIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKCkuCitzdGF0aWMgaW5saW5lIENHQ29sb3JT
cGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCit7CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICBjYXNlIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKKyAgICAgICAgcmV0dXJuIGxpbmVhclNS
R0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfRElTUExBWV9QMykKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgorICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworI2VuZGlmCisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzUkdCQ29sb3JTcGFj
ZVJlZigpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IGNkMWQ2YzBlYTVkMmUy
MzA1MGZjYjQwMWE0NWNlY2E4NWFiZmNkN2YuLjlmODZhMmY4NGFjNjc0OTMzOGM1NDQ5OWNiYzg2
OTkwN2VlMjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC01MzIsNyArNTMyLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIHMKICAgICB9KSk7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9
IHBpeGVsQnVmZmVyLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgcGl4ZWxCdWZmZXIuZm9ybWF0KCku
Y29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbywgZGF0YVByb3ZpZGVy
LmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKKyAgICBhdXRv
IGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VT
aXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lk
dGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBpeGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2Up
LCBiaXRtYXBJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJ
bnRlbnREZWZhdWx0KSkpOwogCiAgICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52
YXMncyBjb250ZW50IHRvIGJlIHJlc2l6ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28gYmFjayB0
byB0aGUgQ2FudmFzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKaW5kZXggNjdk
MTZiNmE2MjQzYmQ2MjkzZGVlMzQ0MTc4YjY4OWVhZTFiNmUzMy4uYjhlMGExNmMzZjUyNThjNzY0
ZDk1YjhlMjUxOTdmN2I5ZTIzYWMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAog
I2lmIEhBVkUoSU9TVVJGQUNFKQogCi0jaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3Mv
Q29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC02MCw3
ICs1OSw3IEBAIElPU3VyZmFjZVBvb2wmIElPU3VyZmFjZVBvb2w6OnNoYXJlZFBvb2woKQogICAg
IHJldHVybiBwb29sOwogfQogCi1zdGF0aWMgYm9vbCBzdXJmYWNlTWF0Y2hlc1BhcmFtZXRlcnMo
SU9TdXJmYWNlJiBzdXJmYWNlLCBJbnRTaXplIHJlcXVlc3RlZFNpemUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQorc3Rh
dGljIGJvb2wgc3VyZmFjZU1hdGNoZXNQYXJhbWV0ZXJzKElPU3VyZmFjZSYgc3VyZmFjZSwgSW50
U2l6ZSByZXF1ZXN0ZWRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgSU9TdXJmYWNl
OjpGb3JtYXQgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQgIT0gc3VyZmFjZS5mb3JtYXQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAzLDcgKzEwMiw3IEBAIHZvaWQgSU9TdXJmYWNl
UG9vbDo6ZGlkVXNlU3VyZmFjZU9mU2l6ZShJbnRTaXplIHNpemUpCiAgICAgbV9zaXplc0luUHJ1
bmVPcmRlci5hcHBlbmQoc2l6ZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZVBvb2w6OnRha2VTdXJmYWNlKEludFNpemUgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCitzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtlU3VyZmFjZShJbnRTaXplIHNp
emUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQp
CiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIENhY2hlZFN1cmZhY2VNYXA6
Oml0ZXJhdG9yIG1hcEl0ZXIgPSBtX2NhY2hlZFN1cmZhY2VzLmZpbmQoc2l6ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgKaW5k
ZXggN2EwYjRlMzI2OTYyMDNjMDczYzJmZTdiMzNjOGNjMDA3MjVmZTg3My4uNWRlOTY3ZDAyMzRk
M2ZkYmFjNzRlZTljZjI0OWJjYzdmNjJjNzQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaApAQCAtMzksOCArMzksNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERlc3RpbmF0YXRpb25Db2xvclNwYWNlOwot
CiBjbGFzcyBJT1N1cmZhY2VQb29sIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJT1N1cmZh
Y2VQb29sKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ5LDcgKzQ3LDcgQEAg
Y2xhc3MgSU9TdXJmYWNlUG9vbCB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IElPU3VyZmFjZVBvb2wmIHNoYXJlZFBvb2woKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IHRha2VTdXJmYWNlKEludFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IElPU3VyZmFjZTo6Rm9ybWF0KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiB0YWtl
U3VyZmFjZShJbnRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIElPU3VyZmFjZTo6Rm9ybWF0KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFN1cmZhY2Uoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4pOwogCiAgICAgdm9pZCBkaXNjYXJkQWxsU3VyZmFjZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
LmNwcAppbmRleCBiYjA1NjM3YWVmNWNiNWE5NWZiZjhmN2M0MGU3YjYzZjAyMjExZDY2Li5iNGE3
OTVkYzBjMmZhYWExYmMwNDQzNTA1NTU5M2M4ZDhlNWI5YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVm
ZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZvckVuY29kaW5nKENGU3RyaW5nUmVmIGQKICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIHVzaW5nIHRoZSBzYW1lIGxvZ2ljIGFzIEltYWdl
QnVmZmVyVXRpbGl0aWVzQ0c/CiAKICAgICAgICAgLy8gSlBFR3MgZG9uJ3QgaGF2ZSBhbiBhbHBo
YSBjaGFubmVsLCBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNvbXBvc2l0ZSBvbiB0b3Agb2YgYmxh
Y2suCi0gICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkgfTsKKyAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IGdldFBpeGVsQnVmZmVyKGZvcm1hdCwgbG9naWNhbFJlY3QoKSk7CiAgICAgICAgIGlmICghcGl4
ZWxCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5Miw3ICsxOTIsNyBA
QCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlDR0ltYWdl
Rm9yRW5jb2RpbmcoQ0ZTdHJpbmdSZWYgZAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAgICAgYXV0byBpbWFnZVNpemUgPSBwaXhlbEJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBy
ZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3Jt
YXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJE
ZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAw
LCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1cm4gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCks
IDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShwaXhlbEJ1
ZmZlci0+Zm9ybWF0KCkuY29sb3JTcGFjZSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBr
Q0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBr
Q0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgfQogCiAgICAgaWYgKHJlc29sdXRpb25T
Y2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6
WWVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKaW5kZXggNWZmY2UxMmZl
YTIxOWYzMTAwYThiZWI5NjIzMzA4MDg3OGNhN2JhNi4uZGQzNDFiMTQyMTZjMmUyYzlkNDZkMmFi
MDViOWFhNTJkN2Q5NzRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcApA
QCAtNjIsNyArNjIsNyBAQCBzaXplX3QgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNhbGN1
bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldAogICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoYmFja2VuZFNpemUsIGNhbGN1bGF0
ZUJ5dGVzUGVyUm93KGJhY2tlbmRTaXplKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3BhY2VS
ZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKIHsKICAgICBBU1NFUlQocGFyYW1l
dGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCkBAIC04MSw3ICs4MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjCiAgICAgc2l6ZV90IG51bUJ5dGVzID0gYmFja2Vu
ZFNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJvdzsKICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmln
RW5vdWdoKGRhdGEsIG51bUJ5dGVzKTsKIAotICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNp
emUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93LCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UucGxhdGZv
cm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkhvc3QpKTsKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhl
aWdodCgpLCA4LCBieXRlc1BlclJvdywgY2dDb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAgICAgaWYgKCFjZ0Nv
bnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05NiwxNiArOTYsMTcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKGMKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAg
ICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8g
Y29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKSB7Ci0gICAgICAgIGF1dG8gb3Zl
cnJpZGVQYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKLSAgICAgICAgb3ZlcnJpZGVQYXJhbWV0ZXJz
LmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBjZ0NvbG9yU3BhY2UgfTsKLQot
ICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShvdmVycmlk
ZVBhcmFtZXRlcnMsIG51bGxwdHIpOwotICAgIH0KKyAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2Ug
PSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4
dCkgOiBudWxscHRyKQorICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOwogCiAgICAg
cmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVs
bHB0cik7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4g
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JT
cGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKK30KKwogSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4mJiBkYXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29u
dGV4dCkKICAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBtX2Rh
dGEoZGF0YSkKQEAgLTE0NSw3ICsxNDYsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAg
ICAgICBhdXRvIGJhY2tlbmRTaXplID0gdGhpcy0+YmFja2VuZFNpemUoKTsKICAgICAgICAgcmV0
dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKAogICAgICAgICAg
ICAgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRl
c1BlclJvdygpLAotICAgICAgICAgICAgY29sb3JTcGFjZSgpLnBsYXRmb3JtQ29sb3JTcGFjZSgp
LCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKKyAgICAgICAgICAgIGNhY2hlZENHQ29sb3JTcGFj
ZShjb2xvclNwYWNlKCkpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0
bWFwQnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKICAgICAgICAgICAgIDAs
IHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCAwODk3M2YzODE4OWFlNmI2MGY4MjgwZDAwMzI1ZGJi
NDgwYmFlMmY0Li5jMWY4ZjU3YTdjMDNkYzg2YzdjMWQ2NjE4ZDg5Y2EyN2YxNWVhYjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTM5LDkgKzM5LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0
ZXJzJik7CiAgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFt
ZXRlcnMmKTsKIAorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25z
dCBIb3N0V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93
Kik7Ci0KLSAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGNyZWF0ZVVzaW5nQ29sb3JTcGFjZU9mR3Jh
cGhpY3NDb250ZXh0KCkgKG9yIHNvbWV0aGluZyBsaWtlIHRoYXQpLgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJh
bWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuY3BwCmluZGV4IDBjNzA2ZDE4MzM5NWQ5NTk2OGZiZmJmYzZjOTc0MDlmZDViODkyMjMuLjRi
ZDQ0MzkwN2JjYzFhMWJjYTE1NmMxMmJlN2Y2MjE2MDA4OTU5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtODEsMTMgKzgxLDEzIEBAIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dENvbG9yU3Bh
Y2UoY29uc3QKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNw
YWNlKGNvbnRleHQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNl
UmVmIGNnQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBJ
bnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMp
OwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJh
Y2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4
ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElP
U3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlLCBJ
T1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsK
ICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMDIsMTYg
KzEwMiwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiB7Ci0gICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0
Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgewot
ICAgICAgICBhdXRvIG92ZXJyaWRlUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7Ci0gICAgICAgIG92
ZXJyaWRlUGFyYW1ldGVycy5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dD
b2xvclNwYWNlIH07Ci0KLSAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKG92ZXJyaWRlUGFyYW1ldGVycywgbnVsbHB0cik7Ci0gICAgfQorICAgIGlmIChh
dXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0
Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpCisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCks
IG51bGxwdHIpOwogCiAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJh
bWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgaG9zdFdp
bmRvdyk7Cit9CisKIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKICAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKHBhcmFt
ZXRlcnMpCiAgICAgLCBtX3N1cmZhY2UoV1RGTW92ZShzdXJmYWNlKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggZWU5ZGVmYzIwODQ3NWZiZmI4ZTUxYmI3YWZhNDcyZTg2
NjdmODUzYy4uOWNjMDFiMDE3MWNhNjUyYWMwZTdjMTI0YjU1MGFlNzk2OTBkZWJkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7
CiAgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFy
YW1ldGVycyYpOwogICAgIAorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJl
ZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhv
c3RXaW5kb3cqKTsKLSAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGNyZWF0ZVVzaW5nQ29sb3JTcGFj
ZU9mR3JhcGhpY3NDb250ZXh0KCkgKG9yIHNvbWV0aGluZyBsaWtlIHRoYXQpLgogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKaW5kZXggMTJiM2U0NjUxZjQ2
ODE3OWQxYTY2NjNlM2I5MDUwZTAwOTU4NDY1Yy4uOGFiZDM5N2VhODdkODQxOWFlNWU3ZmFjMDM5
ZDYwZDYzNjI1MGRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGUoY29uc3QgUGl4ZWxCdWZmZXImIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGF1dG8gaW1hZ2VTaXplID0gc291cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0g
YWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHNvdXJjZS5mb3JtYXQoKS5jb2xvclNw
YWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwgZGF0
YUFscGhhSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50
ZW50RGVmYXVsdCkpOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1h
Z2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUu
d2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHNvdXJjZS5mb3JtYXQoKS5jb2xvclNwYWNlKSwg
a0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5n
ZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKIAogICAgIHJldHVy
biBlbmNvZGUoaW1hZ2UuZ2V0KCksIGRlc3RpbmF0aW9uVVRJLmdldCgpLCBxdWFsaXR5LCBmdW5j
dGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRl
eCBmMmExNTlmMWRmMjJmMWUzYmY5NDAxM2I1NTA1MjZhZmVhMmJlMDAzLi4zNjZhY2Y3MWQ0NjI3
N2IxYTdiOTRjOWNlMmZmM2NiODliZGJjYzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0KQEAgLTU3MSw3ICs1NzEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewog
ICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwotICAg
IGF1dG8gYmFja2luZyA9IElPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJT
aXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBhdXRvIGJhY2tpbmcg
PSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgp
LCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKICAgICBpZiAoIWJhY2tpbmcpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2UuaAppbmRleCBlMjI1Y2ZkMjc4MGVlYzI3OTc0ZWRmNzFjZTQ3
MDAyOTJlZWM4YjE2Li5mN2I5YjMzZDE1ZTY4NDViYWQ4M2I1MGQ1NTBlYmE1YTc1ZGJjNjhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UuaApAQCAtMjcsMTAgKzI3LDkgQEAKIAogI2lmIEhBVkUoSU9TVVJGQUNFKQogCi0jaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1
ZGUgPG9iamMvb2JqYy5oPgogI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+
CisjaW5jbHVkZSAiSW50U2l6ZS5oIgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBM
QVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAj
ZGVmaW5lIEhBVkVfSU9TVVJGQUNFX1JHQjEwIDEKQEAgLTQ3LDcgKzQ2LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSG9zdFdpbmRvdzsK
KyAgICAKKyNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogY2xhc3MgSW1h
Z2VCdWZmZXI7CisjZW5kaWYKIAogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiBl
bnVtIGNsYXNzIFZvbGF0aWxpdHlTdGF0ZSA6IHVpbnQ4X3Q7CkBAIC05OSwxMCArMTAxLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgdWludDMyX3QgbV9mbGFnczsKICAgICB9OwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXpl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVh
dGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBXVEY6
Ok1hY2hTZW5kUmlnaHQmJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21T
dXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJ
bnRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1hdCA9IEZvcm1hdDo6QkdSQSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRT
aXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1hdCA9IEZvcm1h
dDo6QkdSQSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IGNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiYsIENH
Q29sb3JTcGFjZVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNl
UmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gY3JlYXRlRnJvbUltYWdlKENHSW1hZ2VSZWYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhl
bEJ1ZmZlclJlZik7CiAgICAgCkBAIC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIEludFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHNpemVfdCB0b3RhbEJ5dGVz
KCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEJ5dGVzOyB9CiAKLSAgICBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0K
KyAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JT
cGFjZS5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIEZvcm1hdCBmb3JtYXQoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBJT1N1cmZhY2VJRCBzdXJmYWNlSUQoKSBjb25zdDsKICAgICBz
aXplX3QgYnl0ZXNQZXJSb3coKSBjb25zdDsKQEAgLTE2NywxNCArMTY5LDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCk7CiAKIHByaXZhdGU6Ci0g
ICAgSU9TdXJmYWNlKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIEZvcm1hdCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgSU9TdXJmYWNlKElP
U3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisgICAgSU9TdXJmYWNl
KEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0LCBi
b29sJiBzdWNjZXNzKTsKKyAgICBJT1N1cmZhY2UoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VS
ZWYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHN1cmZhY2VGcm9t
UG9vbChJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBGb3JtYXQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBz
dXJmYWNlRnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNl
UmVmLCBGb3JtYXQpOwogICAgIEludFNpemUgY29udGV4dFNpemUoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHRTaXplOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0U2l6ZShJbnRTaXplKTsKIAotICAg
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CisgICAgUmV0YWluUHRyPENHQ29s
b3JTcGFjZVJlZj4gbV9jb2xvclNwYWNlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIEludFNp
emUgbV9jb250ZXh0U2l6ZTsKICAgICBzaXplX3QgbV90b3RhbEJ5dGVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDU4
YzUxMjRkNGI2YzYxMzY0ZThkMzY5NmYzNDk1ZmRiMjY0NTk3YTAuLmJlMzQzMDRiMmQxMDczNTYz
MWFiOGZhOTM5Nzc4NGZmMGRjZTU2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiSU9TdXJmYWNlLmgiCiAKLSNpbXBvcnQgIkRlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oIgorI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2lt
cG9ydCAiSG9zdFdpbmRvdy5oIgpAQCAtNDEsMTEgKzQxLDkgQEAKICNpbXBvcnQgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKLSNpbXBvcnQgIkNv
cmVWaWRlb1NvZnRMaW5rLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6c3VyZmFjZUZyb21Qb29sKEludFNpemUg
c2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSBzaXplLCBJbnRTaXpl
IGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9y
bWF0KQogewogICAgIGF1dG8gY2FjaGVkU3VyZmFjZSA9IElPU3VyZmFjZVBvb2w6OnNoYXJlZFBv
b2woKS50YWtlU3VyZmFjZShzaXplLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiAgICAgaWYg
KCFjYWNoZWRTdXJmYWNlKQpAQCAtNTUsMTIgKzUzLDEyIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbChJbnRTaXplIHNpemUsIElu
dFNpCiAgICAgcmV0dXJuIGNhY2hlZFN1cmZhY2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAgcmV0dXJuIElPU3Vy
ZmFjZTo6Y3JlYXRlKHNpemUsIHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXpl
LCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBpZiAoYXV0
byBjYWNoZWRTdXJmYWNlID0gc3VyZmFjZUZyb21Qb29sKHNpemUsIGNvbnRleHRTaXplLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCkpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKElPU3VyZmFj
ZSwgc3RyZWFtIDw8ICJJT1N1cmZhY2U6OmNyZWF0ZSB0b29rIGZyb20gcG9vbDogIiA8PCAqY2Fj
aGVkU3VyZmFjZSk7CkBAIC03NywxMyArNzUsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLAog
ICAgIHJldHVybiBzdXJmYWNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1
cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdo
dCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQorc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IE1hY2hT
ZW5kUmlnaHQmJiBzZW5kUmlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQogewogICAg
IGF1dG8gc3VyZmFjZSA9IGFkb3B0Q0YoSU9TdXJmYWNlTG9va3VwRnJvbU1hY2hQb3J0KHNlbmRS
aWdodC5zZW5kUmlnaHQoKSkpOwogICAgIHJldHVybiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJm
YWNlKHN1cmZhY2UuZ2V0KCksIGNvbG9yU3BhY2UpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiBz
dXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSkKIHsKICAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4obmV3IElPU3VyZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKSk7
CiB9CkBAIC05Niw3ICs5NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFj
ZTo6Y3JlYXRlRnJvbUltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCiAgICAgc2l6ZV90IHdpZHRoID0g
Q0dJbWFnZUdldFdpZHRoKGltYWdlKTsKICAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhl
aWdodChpbWFnZSk7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShJbnRT
aXplKHdpZHRoLCBoZWlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBDR0ltYWdlR2V0Q29s
b3JTcGFjZShpbWFnZSkgfSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUo
SW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgQ0dJbWFnZUdldENvbG9yU3BhY2UoaW1hZ2UpKTsKICAg
ICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gc3VyZmFj
ZUNvbnRleHQgPSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoKTsKQEAgLTExOCw3ICsx
MTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21Q
aXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeAogICAgIGlmICghY29sb3JTcGFjZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gY3JlYXRlRnJvbVN1cmZhY2Uoc3Vy
ZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY29sb3JTcGFjZSB9KTsKKyAgICByZXR1cm4g
Y3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgSU9TdXJm
YWNlOjptb3ZlVG9Qb29sKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKQEAg
LTE5OCw3ICsxOTYsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpvcHRpb25zRm9yMzJCaXRTdXJm
YWNlKEludFNpemUgc2l6ZSwgdW5zaWduZWQgcGl4ZWxGb3JtYXQpCiAKIH0KIAotSU9TdXJmYWNl
OjpJT1N1cmZhY2UoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nl
c3MpCitJT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNp
emUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgZm9ybWF0LCBib29sJiBzdWNj
ZXNzKQogICAgIDogbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAgLCBtX3NpemUoc2l6ZSkK
ICAgICAsIG1fY29udGV4dFNpemUoY29udGV4dFNpemUpCkBAIC0yMzQsNyArMjMyLDcgQEAgSU9T
dXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3AKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTGF5ZXJzLCAi
SU9TdXJmYWNlIGNyZWF0aW9uIGZhaWxlZCBmb3Igc2l6ZTogKCVkICVkKSBhbmQgZm9ybWF0OiAo
JWQpIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBmb3JtYXQpOwogfQogCi1JT1N1cmZh
Y2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlKQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1
cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQogICAgIDogbV9jb2xvclNwYWNlKGNv
bG9yU3BhY2UpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKIHsKQEAgLTM0OSw3ICszNDcsNyBA
QCBDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQoY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIG1f
Y2dDb250ZXh0ID0gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGUobV9zdXJmYWNlLmdl
dCgpLCBtX2NvbnRleHRTaXplLndpZHRoKCksIG1fY29udGV4dFNpemUuaGVpZ2h0KCksIGJpdHNQ
ZXJDb21wb25lbnQsIGJpdHNQZXJQaXhlbCwgbV9jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFj
ZSgpLCBiaXRtYXBJbmZvKSk7CisgICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNl
Q29udGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9j
b250ZXh0U2l6ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2Nv
bG9yU3BhY2UuZ2V0KCksIGJpdG1hcEluZm8pKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBp
ZiAoYXV0byBkaXNwbGF5TWFzayA9IHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpKSB7CkBAIC01
MTcsNyArNTE1LDcgQEAgdm9pZCBJT1N1cmZhY2U6OnNldE93bmVyc2hpcElkZW50aXR5KHRhc2tf
aWRfdG9rZW5fdCBuZXdPd25lcikKIAogdm9pZCBJT1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNl
VG9Qcm9wZXJ0aWVzKCkKIHsKLSAgICBhdXRvIGNvbG9yU3BhY2VQcm9wZXJ0aWVzID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDb3B5UHJvcGVydHlMaXN0KG1fY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9y
U3BhY2UoKSkpOworICAgIGF1dG8gY29sb3JTcGFjZVByb3BlcnRpZXMgPSBhZG9wdENGKENHQ29s
b3JTcGFjZUNvcHlQcm9wZXJ0eUxpc3QobV9jb2xvclNwYWNlLmdldCgpKSk7CiAgICAgSU9TdXJm
YWNlU2V0VmFsdWUobV9zdXJmYWNlLmdldCgpLCBrSU9TdXJmYWNlQ29sb3JTcGFjZSwgY29sb3JT
cGFjZVByb3BlcnRpZXMuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KaW5kZXggNDdmM2Y4MDE4NmJhOWI1ZDhjNjFiMTYwYjQ2
YjU3YzBkODVmZjc0Yy4uYzVhNGJjMTQ4ZWE2NTNiZmNmZTM1ZmY1YWEwYmU4MzZhMzA0ZDkxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0Zp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpA
QCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJl
bmRlclRvSW1hZ2VCdWZmZXIoRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0CiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBhdXRvJiBzdXJmYWNlID0gZG93bmNhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1
ZmZlcj4oKm1fb3V0cHV0SW1hZ2VCdWZmZXIpLnN1cmZhY2UoKTsKLSAgICBbc2hhcmVkQ0lDb250
ZXh0KCkuZ2V0KCkgcmVuZGVyOiBtX291dHB1dEltYWdlLmdldCgpIHRvSU9TdXJmYWNlOiBzdXJm
YWNlLnN1cmZhY2UoKSBib3VuZHM6ZGVzdFJlY3QobGFzdEVmZmVjdCkgY29sb3JTcGFjZTpsYXN0
RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07CisgICAgW3No
YXJlZENJQ29udGV4dCgpLmdldCgpIHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3Vy
ZmFjZTogc3VyZmFjZS5zdXJmYWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9y
U3BhY2U6Y2FjaGVkQ0dDb2xvclNwYWNlKGxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpKV07
CiB9CiAgICAgCiBGbG9hdFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmRlc3RS
ZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDgxYjkyNDc0ZTI0ZWNkMjM2ZjIyMDc3
NGVkMWNiY2Y4NDY5ZjMyNzguLmQ3Y2JhMjA3ZWJjNTViYTczYjhmZjA0YjM4YjQxYzc1ZDVlNzA5
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzks
NyArMzksNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVmZmVy
PEJhY2tlbmRUeXBlPiB7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmJhc2VU
cmFuc2Zvcm07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3cpCiAgICAgewogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBs
YXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA3NjdhZTFjZTI3MDA1YjBmZGQzNTdkMTlmYjdm
ODhjMzc2MTY3ZWRkLi44MDJlNDQzNmUzMDU0YTlhZmNlOGNhNjY0ZDlkYTBlZmQwYTBhYWFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMjgxLDcg
KzI4MSw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIGdldDxGaWxsUm91
bmRlZFJlY3Q+KCkufkZpbGxSb3VuZGVkUmVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6Ci0gICAgICAgIGdldDxHZXRQaXhlbEJ1ZmZlcj4o
KS5+R2V0UGl4ZWxCdWZmZXIoKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8R2V0UGl4ZWxCdWZmZXI+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgZ2V0PFB1dFBp
eGVsQnVmZmVyPigpLn5QdXRQaXhlbEJ1ZmZlcigpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQg
SXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIGNhc2Ug
SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBnZXQ8QmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkufkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKCk7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKICAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj46
OnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCAw
MzgxM2I4Mzg4YjAyMzhhOGU3NjcyOTA3OGI1YTIyM2RjMTMzMmViLi4xYTYwZWZmNjQ5NzliZmIw
ZWI4OGNlZjlhMDNiNzVmNDUxZDA2ZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbVR5cGUuY3BwCkBAIC0yODEsNyArMjgxLDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5
cGUgdHlwZSkKICAgICAgKiBhbmQgKDMpIGFsbCB0aGUgInN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0lubGluZUl0ZW0icyBpbnNpZGUgdGhlIGluZGl2aWR1YWwgaXRlbSBjbGFzc2VzLiAqLwogCiAg
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKICAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwUGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoK
QEAgLTI5NSw3ICsyOTQsNiBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgogICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVk
UmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1U
eXBlOjpQdXRQaXhlbEJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKICAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKQEAgLTMxMiw2ICszMTAsNyBAQCBib29sIGlzSW5s
aW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcE91dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZl
cjoKKyAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKICAgICBj
YXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6Q29uY2F0ZW5hdGVDVE06CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVu
dE1hcmtlcjoKQEAgLTM1Miw2ICszNTEsNyBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0
eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAgICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlTGluZToKICAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6CisgICAgY2FzZSBJdGVt
VHlwZTo6R2V0UGl4ZWxCdWZmZXI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4
IDA3NDA0MWYyNmExZTk2NGRjNGM3NmY0ODJiYzRjOTkzZTg3ZWUzMTUuLmExZDU3YTA2ODVmMDMz
OGY3ZGRhZjI2ZTA4YTIyMmVhMzA2NGE3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaApAQCAtODgwLDU0ICs4ODAsMjMgQEAgT3B0aW9uYWw8Q2xpcFBhdGg+IENsaXBQYXRoOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIGNsYXNzIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRl
bVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJ
bmxpbmVJdGVtID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRl
bSA9IGZhbHNlOwogCiAgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCiAgICAg
ICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKLSAgICAgICAgLCBtX2NvbG9yU3BhY2Uo
V1RGTW92ZShjb2xvclNwYWNlKSkKKyAgICAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkK
ICAgICB7CiAgICAgfQogCi0gICAgLy8gRXhwbGljaXQgZGVzdHJ1Y3RvciBhZGRlZCB0byBmb3Jj
ZSBub24tdHJpdmlhbCBkZXN0cnVjdG9yIG9uIGFsbCBwbGF0Zm9ybXMKLSAgICAvLyBhcyB0aGUg
ZW5jb2RpbmcgbG9naWMgY3VycmVudGx5IGhhcmRjb2RlcyB3aGljaCBkaXNwbGF5IGxpc3QgaXRl
bSB0eXBlcyBuZWVkCi0gICAgLy8gb3V0IG9mIGxpbmUgdHJlYXRtZW50IHJhdGhlciB0aGFuIHVz
aW5nIHRoZSBpc0lubGluZUl0ZW0gY29uc3RhbnQuCi0gICAgfkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKCkgeyB9Ci0KICAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQotICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQotCi0gICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCiBwcml2YXRlOgogICAg
IEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2Nv
bG9yU3BhY2U7CiB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAg
ZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uOwotICAgIGVuY29kZXIgPDwgbV9jb2xvclNwYWNlOwot
fQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM+IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKLXsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOwotICAgIGRlY29k
ZXIgPj4gZGVzdGluYXRpb247Ci0gICAgaWYgKCFkZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29s
b3JTcGFjZTsKLSAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFjb2xvclNwYWNl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7ICpkZXN0aW5h
dGlvbiwgV1RGTW92ZSgqY29sb3JTcGFjZSkgfX07Ci19Ci0KIGNsYXNzIEVuZENsaXBUb0RyYXdp
bmdDb21tYW5kcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVt
VHlwZSA9IEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM7CkBAIC0xOTY5LDU0ICsx
OTM4LDIzIEBAIHByaXZhdGU6CiBjbGFzcyBHZXRQaXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpHZXRQaXhlbEJ1
ZmZlcjsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIEdldFBpeGVsQnVm
ZmVyKFBpeGVsQnVmZmVyRm9ybWF0IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCkKKyAgICBHZXRQaXhlbEJ1ZmZlcihXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRG
b3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpCiAgICAgICAgIDogbV9zcmNS
ZWN0KHNyY1JlY3QpCi0gICAgICAgICwgbV9vdXRwdXRGb3JtYXQoV1RGTW92ZShvdXRwdXRGb3Jt
YXQpKQorICAgICAgICAsIG1fb3V0cHV0Rm9ybWF0KG91dHB1dEZvcm1hdCkKICAgICB7CiAgICAg
fQogCi0gICAgLy8gRXhwbGljaXQgZGVzdHJ1Y3RvciBhZGRlZCB0byBmb3JjZSBub24tdHJpdmlh
bCBkZXN0cnVjdG9yIG9uIGFsbCBwbGF0Zm9ybXMKLSAgICAvLyBhcyB0aGUgZW5jb2RpbmcgbG9n
aWMgY3VycmVudGx5IGhhcmRjb2RlcyB3aGljaCBkaXNwbGF5IGxpc3QgaXRlbSB0eXBlcyBuZWVk
Ci0gICAgLy8gb3V0IG9mIGxpbmUgdHJlYXRtZW50IHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpc0lu
bGluZUl0ZW0gY29uc3RhbnQuCi0gICAgfkdldFBpeGVsQnVmZmVyKCkgeyB9Ci0KLSAgICBjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRw
dXRGb3JtYXQ7IH0KKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQoKSBjb25zdCB7
IHJldHVybiBtX291dHB1dEZvcm1hdDsgfQogICAgIEludFJlY3Qgc3JjUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3JjUmVjdDsgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxHZXRQaXhlbEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKLQogcHJpdmF0ZToK
ICAgICBJbnRSZWN0IG1fc3JjUmVjdDsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBtX291dHB1dEZv
cm1hdDsKIH07CiAKLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIEdldFBpeGVsQnVmZmVy
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fc3Jj
UmVjdDsKLSAgICBlbmNvZGVyIDw8IG1fb3V0cHV0Rm9ybWF0OwotfQotCi10ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IEdldFBpeGVsQnVmZmVyOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0Owot
ICAgIGRlY29kZXIgPj4gc3JjUmVjdDsKLSAgICBpZiAoIXNyY1JlY3QpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gb3V0cHV0
Rm9ybWF0OwotICAgIGRlY29kZXIgPj4gb3V0cHV0Rm9ybWF0OwotICAgIGlmICghb3V0cHV0Rm9y
bWF0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IFdURk1v
dmUoKm91dHB1dEZvcm1hdCksICpzcmNSZWN0IH19OwotfQotCiBjbGFzcyBQdXRQaXhlbEJ1ZmZl
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0
ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAppbmRleCA2OTQ0ODI4ZGZjNjRiODc0YjkzN2NlZWFkZjJhZWRjMmE2NzM4MTE1Li45
ZGI1YTVhODEwMWE5OWRkNWRjNmFmYzAyMGUzZjU2YmRjZWZmM2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBSZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QKICAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVy
LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgUmVj
b3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQordm9pZCBSZWNvcmRlcjo6Y2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYp
PiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBHcmFwaGljc0NvbnRleHQgbmVzdGVkQ29udGV4
dChbJl0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGF1dG8gaW5pdGlhbENs
aXAgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBkZXN0aW5hdGlvbi5zaXplKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggYjg3NmQ2YWRiNTE0NzNmMWYzMGFh
YmRjMmJhMjVhYTNiNjAyNDE5Yi4uNzYzMzlhYmU4YTYwODA0YmM3MmNjMDkxZmY0ZDIxYWYxNGNh
ZTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVs
ZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9u
PHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAj
aWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVy
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5Q
YWludEZyYW1lRm9yTWVkaWEoY29uc3QgTWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNw
bGFjZW1lbnRNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5jcHAKaW5kZXggMDQ3NDkzMzkyYmIyODE0NmQ4YjE2OWJhMGE3
YzMyYjE2YzU2M2ZhMS4uYTg1NWEyMDIxNzNlODZiMmRkODFmNjgxOGYwNjk3MzVjZjYzM2ZiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURp
c3BsYWNlbWVudE1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBGRURp
c3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgc2NhbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJikKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKQogewogICAgIC8vIFNwZWM6IFRoZSAnY29s
b3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgdG8gdGhlICdp
bjInIHNvdXJjZSBpbWFnZQogICAgIC8vIGFuZCBkb2VzIG5vdCBhcHBseSB0byB0aGUgJ2luJyBz
b3VyY2UgaW1hZ2UuIFRoZSAnaW4nIHNvdXJjZSBpbWFnZSBtdXN0IHJlbWFpbiBpbiBpdHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNw
bGFjZW1lbnRNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuaAppbmRleCBkZDczMmE4ODEwNzNlMjY2YmM4NDZhZmU2ODE5ZTY3
NTE2MjNhM2EyLi5jZWJiYzBiMTM4Y2E2Y2M4YjI0YzA3MDZmODhhNWFjZjNiMmFjMjg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBmbG9h
dCBzY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KICAgICBib29sIHNldFNjYWxlKGZs
b2F0KTsKIAotICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlKSBvdmVycmlkZTsKICAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9y
U3BhY2UoRmlsdGVyRWZmZWN0KiwgY29uc3QgaW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9v
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgK
aW5kZXggYjcwNGRjOTY5YzZkNzU4OGJjZWIwYWQ4YjI0NjgyZmEwNjE3MzQ4ZS4uMjk5MzE3Mjhi
ODBiMTVhZDAzN2Y5Yzk0MTMwNmY3NTYwNmE3NTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKQEAgLTQwLDggKzQwLDggQEAg
cHVibGljOgogI2lmICFVU0UoQ0cpCiAgICAgLy8gZmVGbG9vZCBkb2VzIG5vdCBwZXJmb3JtIGNv
bG9yIGludGVycG9sYXRpb24gb2YgYW55IGtpbmQsIHNvIHRoZSByZXN1bHQgaXMgYWx3YXlzIGlu
IHRoZSBjdXJyZW50CiAgICAgLy8gY29sb3Igc3BhY2UgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUg
b2YgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzLgotICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29s
b3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZSB7IEZpbHRlckVm
ZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
IH0KLSAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJikgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOyB9CisgICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsgfQorICAgIHZvaWQg
c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmls
dGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
Qik7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDM1YzUxY2JiMjI5ZGVlOTY0MmRj
MWU3ZGNhMGM1ZGIyZmNhYzIwYWQuLmMwNzcwNmEwZGE1ODdmNDM2ZWE2NmNmYTJhZDM0NzQ0NGYx
NDcyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgICAgIHRpbGVSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJSZXNvbHV0
aW9uKCkud2lkdGgoKSwgZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSk7CiAgICAg
fQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFn
ZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGZpbHRlcigpLnJlbmRlcmluZ01vZGUoKSk7CiAgICAg
aWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4
IDZlOWVlM2Q0MDRhNTIxZjdjNTgyZDI5YTgxNDBlN2U2NzEzNmQyZTAuLmFjMjZkMjAxN2M3NDU1
MDk3ZDdjYzdmZjA3NGM0M2JkM2VhOWNhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTQzOSw3
ICs0MzksNyBAQCBzdGF0aWMgdm9pZCBjb3B5VW5wcmVtdWx0aXBseWluZ0FscGhhKGNvbnN0IFVp
bnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbQogI2VuZGlmCiB9CiAKLU9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFj
ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsQnVm
ZmVyJiBwaXhlbEJ1ZmZlcikKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNv
bnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdGFyZ2V0
Q29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBV
c2luZyBhbiBJbWFnZUJ1ZmZlciB0byBwZXJmb3JtIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9u
IGlzIHVubmVjZXNzYXJ5LiBXZSBjYW4gZG8gaXQgZGlyZWN0bHkuCiAKQEAgLTQ1NCw3ICs0NTQs
NyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZm
ZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYQogICAgIHJldHVybiBjb252ZXJ0SW1hZ2VCdWZm
ZXJUb0NvbG9yU3BhY2UodGFyZ2V0Q29sb3JTcGFjZSwgKmJ1ZmZlciwgZGVzdGluYXRpb25SZWN0
LCBwaXhlbEJ1ZmZlci5mb3JtYXQoKS5hbHBoYUZvcm1hdCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBp
bnB1dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRBbHBoYUZvcm1hdCkKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNv
bnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdGFyZ2V0
Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEFscGhhRm9ybWF0KQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIGNhbiBiZSBkb25lIG1vcmUgZGlyZWN0bHkgdXNpbmcgUGl4ZWxCdWZmZXJDb252
ZXJzaW9uLgogCkBAIC00NzIsNyArNDcyLDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRl
ckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmEKICAg
ICByZXR1cm4gY29udmVydGVkQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHJlY3QpOwog
fQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5h
dGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0
ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9u
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZl
cnRzIHRoZSBkYXRhIHN0b3JlZCBpbiBtX2ltYWdlQnVmZmVyUmVzdWx0LCBhbmQgc2F2ZSB0byBk
ZXN0aW5hdGlvbgogICAgIGF1dG8gY29udmVydGVkUGl4ZWxCdWZmZXIgPSBjb252ZXJ0SW1hZ2VC
dWZmZXJUb0NvbG9yU3BhY2UoY29sb3JTcGFjZSwgKm1faW1hZ2VCdWZmZXJSZXN1bHQsIHsgSW50
UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSwgb3V0cHV0Rm9ybWF0KTsKQEAg
LTQ4MSw3ICs0ODEsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVm
ZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdAogICAgIGNvcHlJbWFnZUJ5
dGVzKGNvbnZlcnRlZFBpeGVsQnVmZmVyLT5kYXRhKCksIGRlc3RpbmF0aW9uLCBkZXN0UmVjdCk7
CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3Rp
bmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgUGl4ZWxCdWZmZXImIHBpeGVs
QnVmZmVyLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1
ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBQaXhlbEJ1
ZmZlciYgcGl4ZWxCdWZmZXIsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQg
aW4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC9tX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwK
ICAgICAvLyB3aGljaGV2ZXIgaXNuJ3QgbnVsbCwgYW5kIHNhdmUgdG8gZGVzdGluYXRpb24KQEAg
LTYzNiw3ICs2MzYsNyBAQCBib29sIEZpbHRlckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNv
bG9yU3BhY2VDb252ZXJzaW9uKE9wdGlvbmFsPERlc3RpbmF0aW9uQwogI2VuZGlmCiB9CiAKLXZv
aWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgZGVzdGluYXRpb25Db2xvclNwYWNlKQordm9pZCBGaWx0ZXJFZmZlY3Q6
OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RpbmF0
aW9uQ29sb3JTcGFjZSkKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gQ0cgaGFuZGxlcyBjb2xvciBz
cGFjZSBhZGp1c3RtZW50cyBpbnRlcm5hbGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggMjIxMzc1ZTlh
NzBhODc2ODExZjQ3MDk4Mjk1OWViNjkzODIxODE5My4uOWNkZmU3NTdiMzk3YjFmMDQwMjAxZGFm
MTFmOTU1NTg3NzMxYWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0yMyw3ICsyMyw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFJl
Y3RFeHRlbnQuaCIKQEAgLTE2NSwxMyArMTY1LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGNsaXBz
VG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2NsaXBzVG9Cb3VuZHM7IH0KICAgICB2b2lkIHNl
dENsaXBzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkgeyBtX2NsaXBzVG9Cb3VuZHMgPSB2YWx1ZTsgfQog
Ci0gICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBvcGVyYXRpbmdDb2xvclNwYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KLSAgICBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3VsdENvbG9yU3BhY2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JT
cGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRD
b2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQorICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvcGVy
YXRpbmdDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsg
fQorICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSByZXN1bHRDb2xvclNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXN1bHRDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJlc3VsdENv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xv
clNwYWNlID0gY29sb3JTcGFjZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybVJlc3Vs
dENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgaW50KSB7IGluLT50cmFuc2Zvcm1S
ZXN1bHRDb2xvclNwYWNlKG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7IH0KLSAgICB2b2lkIHRyYW5z
Zm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisgICAg
dm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7CiAg
ICAgCiAgICAgc3RhdGljIFZlY3RvcjxmbG9hdD4gbm9ybWFsaXplZEZsb2F0cyhjb25zdCBWZWN0
b3I8ZmxvYXQ+JiB2YWx1ZXMpCiAgICAgewpAQCAtMjAzLDExICsyMDMsMTEgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgPSAwOwogCiAgICAgdm9p
ZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENs
YW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICB2b2lk
IGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkm
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3Rp
bmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBjb3B5Q29udmVydGVkSW1h
Z2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9p
ZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5
JiwgUGl4ZWxCdWZmZXImLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmKTsK
ICAgICBib29sIHJlcXVpcmVzUGl4ZWxCdWZmZXJDb2xvclNwYWNlQ29udmVyc2lvbihPcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KTsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwot
ICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2Uo
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxCdWZmZXImKTsKKyAgICBPcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbik7CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZlclRv
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJik7CiAgICAgCiAK
ICAgICBGaWx0ZXImIG1fZmlsdGVyOwpAQCAtMjQ0LDExICsyNDQsMTMgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fY2xpcHNUb0JvdW5kcyB7IHRydWUgfTsKIAogI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9v
cGVyYXRpbmdDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkg
fTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2Ug
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I7CiAjZWxzZQotICAgIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0T3BlcmF0aW5n
Q29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKICNlbmRpZgotICAgIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBtX3Jlc3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSB9OworCisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5n
Q29sb3JTcGFjZSB7IGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlIH07CisgICAgRGVzdGluYXRp
b25Db2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiB9OwogICAgIAogICAgIGNvbnN0IFR5cGUgbV9maWx0ZXJFZmZlY3RDbGFzc1R5cGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuaAppbmRleCAzMGNkNTRmMjQ1M2JiYThhMzc3NjMyMTMyOGVmMjEwNmI3
ZmNhNWJmLi5hNDhjN2MyNjAzNDgyOWVhOGJmMjFlZTdhNWUzMTkyNDYyMGMyOGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBo
aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuaApAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgogICAgIFNvdXJjZUdyYXBoaWMo
RmlsdGVyJiBmaWx0ZXIpCiAgICAgICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6U291
cmNlR3JhcGhpYykKICAgICB7Ci0gICAgICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgICAgICBzZXRPcGVyYXRpbmdDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciog
ZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJTb3VyY2VHcmFwaGljIjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cAppbmRleCBmMzI3NjQzNjg1MWNjN2UwMWQ0NzBjNTcwZDlkOWYwNmMyM2Q1ZmM1Li4zODVkZjYx
NjgyNzZhYmZmZjU3ZjcxNTQ4MzQ3ZDljMGIxOWY3MjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtMTA3Niw3ICsx
MDc2LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBlbmQoc3RkOjp1bmlxdWVf
cHRyPFBhaW50aW5nT3BlcmF0aW9uPiYmIGNvbW1hbmQKICAgICBtX2NvbW1hbmRMaXN0LmFwcGVu
ZChXVEZNb3ZlKGNvbW1hbmQpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKK3ZvaWQgQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVj
dCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJikKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDMwOGYx
ZmY2MzY1NmFkYTQwOWYwZDVmNTAzNmJjOTFlMjVkN2I2ZDIuLjY1ODkzYjBiMmJjMDZiYmI1MGQ1
YzA0YWQ3Yjk3NmI4YmZkNmYwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNsaXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBXZWJDb3JlOjpXaW5kUnVsZSkg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikg
b3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlh
KFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5h
dGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUdDR0xMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAppbmRleCAwMzU3OTQ1OTJkMTZmYmNk
ZGIxMWQxNTcxYzYzZmNkM2M4YzY0YWE1Li5iZjhjZmQ0MmU0YmFmZTA4Mjk2ZDk0OWZkZTQ2NmU2
MGViNDY2OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcApAQCAt
ODEsNyArODEsNyBAQCB2b2lkIEdDR0xMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAg
SW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRleHQubV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC5t
X2N1cnJlbnRIZWlnaHQpOwogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBtX2Nv
bnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxk
QmxlbmQgOiAwOwogI2lmIFVTRShBTkdMRSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZXh0dXJlU2l6ZSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGV4dHVyZVNpemUsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggY2U0YzBm
YjlhMjM3YWM4YzcyYTBjMjNmNzlmMGMwMjM1MzBkOTBhYi4uNDNkZWUyM2VjY2ExZjM0MTU1MTVl
MjY4NmY2NGFiMWVkMDBjMWEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQmFzZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBPcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQ
YWludFJlc3VsdHMoKQogewotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKICAgICBhdXRvIHBpeGVsQnVm
ZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZm
ZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggN2Zm
MTEzMmIwYzc1YmJhNjllMThjMjkxZDVhYzcwZmVmMDgzN2Q1Yi4uMmVmNzJiMzFhNDcyZWMxZjVh
Njc4MmEyNzJjNmI3NDg1ZGQzMzFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogCiBP
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNG
b3JQYWludFJlc3VsdHMoKQogewotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZv
cm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3Jt
YXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKICAgICBhdXRvIHBpeGVs
QnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVi
dWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKaW5kZXggNjZkODMyODE3ZjM1MjM5Nzk2MWMyZDE2
ZWEzNzYwYzlkYzYxMzUxOS4uZDQ1MTE5NzY3YzhkYTk0YzMwZTk0NTQ0N2ZkZTg3M2M4ZmNmMmIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlLmNwcApAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEJpdG1hcFRleHR1
cmU6OnVwZGF0ZUNvbnRlbnRzKEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRS
ZWN0JiB0YQogewogICAgIC8vIE1ha2luZyBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRl
ZCBidWZmZXIgaGVyZSBpcyBPSyBiZWNhdXNlIHRoaXMgY29kZQogICAgIC8vIGlzbid0IHVzZWQg
YnkgYW55IHBsYXRmb3JtcyB0aGF0IHJlc3BlY3QgdGhlIGFjY2VsZXJhdGVkIGJpdC4KLSAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCmluZGV4IDdhM2I0
NzIzZjQ4YzE3OTg2NGIyZGQ2ZDViMWVkOGQyNzQ5MjM1OGUuLmUwZTg4MDlkOGYzOTYxNGIyYjZi
YjhjN2NmMGYwMjY1MmQ1NzRmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29w
eXJpZ2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgog
ICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCkBAIC0zMSw3ICszMSw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAotI2luY2x1
ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkd0a1V0aWxpdGllcy5oIgpAQCAtODYsMTEg
Kzg1LDYgQEAgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0
dXJuIHNjcmVlbkRlcHRoKHdpZGdldCkgPCAyOwogfQogCi1EZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
c2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQotewotICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKTsKLX0KLQogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtU2NyZWVuSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtU2NyZWVuSU9TLm1tCmluZGV4IDE0MmMxMmE3NjgyMjNiNWNjODc2OWNmMGUzNTM5ODE4YmJk
ZTQ4ZWMuLjc1YjAxZGRkNWYxYTRjYWI0MmRlZjg0NDQzYjU1MmM3N2JiMThkMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxNCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC04OCw5ICs4OCw5IEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlKFdpZGdl
dCopCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1EZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVu
Q29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKK0NHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNw
YWNlKFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVk
Q29sb3Iod2lkZ2V0KSA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGV4dGVuZGVkU1JHQkNvbG9y
U3BhY2VSZWYoKSB9IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CisgICAgcmV0dXJu
IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcih3aWRnZXQpID8gZXh0ZW5kZWRTUkdCQ29sb3JT
cGFjZVJlZigpIDogc1JHQkNvbG9yU3BhY2VSZWYoKTsKIH0KIAogLy8gVGhlc2UgZnVuY3Rpb25z
IHNjYWxlIGJldHdlZW4gc2NyZWVuIGFuZCBwYWdlIGNvb3JkaW5hdGVzIGJlY2F1c2UgSmF2YVNj
cmlwdC9ET00gb3BlcmF0aW9ucwpAQCAtMTkzLDE0ICsxOTMsMTYgQEAgU2NyZWVuUHJvcGVydGll
cyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcygpCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFp
bGFibGVSZWN0ID0gc2NyZWVuLmJvdW5kczsKICAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5z
ZXRZKE5TTWF4WShzY3JlZW4uYm91bmRzKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNj
cmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAogICAgICAgICBGbG9hdFJlY3Qg
c2NyZWVuUmVjdCA9IHNjcmVlbi5fcmVmZXJlbmNlQm91bmRzOwotICAgICAgICBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0cikgfTsKKyAg
ICAgICAgCisgICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBz
Y3JlZW5Db2xvclNwYWNlKG51bGxwdHIpOworICAgICAgICAKICAgICAgICAgaW50IHNjcmVlbkRl
cHRoID0gV2ViQ29yZTo6c2NyZWVuRGVwdGgobnVsbHB0cik7CiAgICAgICAgIGludCBzY3JlZW5E
ZXB0aFBlckNvbXBvbmVudCA9IFdlYkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KG51bGxw
dHIpOwogICAgICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFdlYkNvcmU6
OnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihudWxscHRyKTsKICAgICAgICAgYm9vbCBzY3Jl
ZW5IYXNJbnZlcnRlZENvbG9ycyA9IFdlYkNvcmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7
CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gV2ViQ29yZTo6c2NyZWVuUFBJRmFjdG9yKCk7
CiAKLSAgICAgICAgc2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJ
RCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIFdURk1vdmUo
Y29sb3JTcGFjZSksIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVu
U3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgZmFsc2UsIHNj
YWxlRmFjdG9yIH0pOworICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0
KCsrZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVj
dCwgY29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3Jl
ZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBmYWxzZSwg
c2NhbGVGYWN0b3IgfSk7CiAgICAgICAgIAogICAgICAgICBpZiAoc2NyZWVuID09IFtQQUw6Omdl
dFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSkKICAgICAgICAgICAgIHNjcmVlblByb3BlcnRp
ZXMucHJpbWFyeURpc3BsYXlJRCA9IGRpc3BsYXlJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQppbmRleCBkYmJiNWQ1MjMxYzJiOWZkZjU3
NDM3MWFlOWYwMDVmZjA2ZTJmMTUwLi5kNWUyYzNmNTcyYjIwZDgxNzNhNDVkYzJmMjNhMGUyNTVm
MzQ0YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1T
Y3JlZW5NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2Ny
ZWVuTWFjLm1tCkBAIC0xMzAsNyArMTMwLDkgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2Ny
ZWVuUHJvcGVydGllcygpCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0ID0g
c2NyZWVuLnZpc2libGVGcmFtZTsKICAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5T
TWF4WShzY3JlZW4uZnJhbWUpIC0gKHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZh
aWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBmbGlwCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5S
ZWN0ID0gc2NyZWVuLmZyYW1lOwotICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSB7IHNjcmVlbi5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZSB9OworCisgICAgICAgIFJldGFp
blB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBzY3JlZW4uY29sb3JTcGFjZS5DR0Nv
bG9yU3BhY2U7CisKICAgICAgICAgaW50IHNjcmVlbkRlcHRoID0gTlNCaXRzUGVyUGl4ZWxGcm9t
RGVwdGgoc2NyZWVuLmRlcHRoKTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
ID0gTlNCaXRzUGVyU2FtcGxlRnJvbURlcHRoKHNjcmVlbi5kZXB0aCk7CiAgICAgICAgIGJvb2wg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yID0gW3NjcmVlbiBjYW5SZXByZXNlbnREaXNwbGF5
R2FtdXQ6TlNEaXNwbGF5R2FtdXRQM107CkBAIC0xNjEsNyArMTYzLDcgQEAgU2NyZWVuUHJvcGVy
dGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcygpCiAgICAgICAgIGlmIChkaXNwbGF5TWFzaykK
ICAgICAgICAgICAgIGdwdUlEID0gZ3B1SURGb3JEaXNwbGF5TWFzayhkaXNwbGF5TWFzayk7CiAK
LSAgICAgICAgc2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldChkaXNwbGF5SUQsIFNj
cmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBXVEZNb3ZlKGNvbG9y
U3BhY2UpLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIHNjcmVlblN1cHBvcnRz
SGlnaER5bmFtaWNSYW5nZSwgc2NyZWVuSXNNb25vY2hyb21lLCBkaXNwbGF5TWFzaywgZ3B1SUQs
IGR5bmFtaWNSYW5nZU1vZGUsIHNjYWxlRmFjdG9yIH0pOworICAgICAgICBzY3JlZW5Qcm9wZXJ0
aWVzLnNjcmVlbkRhdGFNYXAuc2V0KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWls
YWJsZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0
aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZl
cnRlZENvbG9ycywgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9j
aHJvbWUsIGRpc3BsYXlNYXNrLCBncHVJRCwgZHluYW1pY1JhbmdlTW9kZSwgc2NhbGVGYWN0b3Ig
fSk7CiAKICAgICAgICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQpCiAg
ICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQgPSBkaXNwbGF5SUQ7
CkBAIC0zMzgsMTMgKzM0MCwxMyBAQCBOU1NjcmVlbiAqc2NyZWVuKFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCkKICAgICByZXR1cm4gZmlyc3RTY3JlZW4oKTsKIH0KIAotRGVzdGluYXRpb25D
b2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitDR0NvbG9yU3BhY2VS
ZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKICAgICBpZiAoYXV0byBkYXRh
ID0gc2NyZWVuUHJvcGVydGllcyh3aWRnZXQpKQotICAgICAgICByZXR1cm4gZGF0YS0+Y29sb3JT
cGFjZTsKKyAgICAgICAgcmV0dXJuIGRhdGEtPmNvbG9yU3BhY2UuZ2V0KCk7CiAKICAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdp
dGhXaW5kb3dTZXJ2ZXIpKTsKLSAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgc2Ny
ZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2UgfTsKKyAgICByZXR1cm4gc2NyZWVu
KHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7CiB9CiAKIGJvb2wgc2NyZWVuU3VwcG9y
dHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCmluZGV4IDMzNDRhMzQ4YjRiZDE2NWYzY2Y1ZmViNjdhMjQ0MjAxYThmYjZk
ZDQuLjJiNDFhNjRjZGQzNWEzMTBjMTkzNDg0OGFiMTBmYWRkZjJhMjM0YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTcyNiw3ICs3MjYsNyBAQCBib29sIFRo
ZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKmNl
bGwsIEdyYXBoaWNzQ29udAogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5T
UmVjdCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1Jl
Y3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgp
LCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0
dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBk
ZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQp
OworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxp
bmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CiAgICAgICAgIGlmICghaW1h
Z2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVh
bWVyLmNwcAppbmRleCA1NTBiMTI1MDM3MzQ4NzkyYjkzNTM4ZDBiYjcyNTdiZDAyZDYyODhhLi43
MjcxMDVkODVjYmE2MTg4ODRiNDZhYmY1NmU1MWI3ZmVhMTNjZDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAg
LTY3LDcgKzY3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6dXBk
YXRlU2FtcGxlQnVmZmVyKCkKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdS
QTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+
bG9naWNhbFNpemUoKSB9KTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdl
dFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCB7IHsgfSwg
aW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGY5OTg4OTU4ODVlMTkzMGNiNmVh
MmRjMmZjMDc4MDgzODgxMGFmZGYuLjllZTY4ODE1ODJlNzViNGJkNjUzMmI5MjVmN2VmYzA1ODNk
NDMwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgSW1hZ2VCdWZmZXIq
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjppbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKG1f
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOwogCi0gICAg
bV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2FwdHVyZVNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoY2FwdHVyZVNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
bV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVuUGxheVN0YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3Jl
ZW5QbGF5U3RhdGlvbi5jcHAKaW5kZXggNGUzMTZmMzc3MTcyMTAxMWQ4ZDk2NzE3MzE0YjFjYjE1
OTA5YzdjNC4uODYwMWQwMWM3ZGE5ZmZkMzM3NjhhMDRiNjNmMmNlOTM0YzY0ZDZlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3JlZW5Q
bGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24v
UGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCi0jaW5jbHVkZSAiRGVz
dGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKIApAQCAtNzIsOSArNzEsNCBAQCBib29sIHNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvcihXaWRnZXQqKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotRGVzdGluYXRp
b25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKLXsKLSAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3Bw
CmluZGV4IDU5OTQ0YWQ2NGYwNjUzYjc0NWNmYTIyZWU4OTg4ZmU2OGRhZDY4YjIuLjVjZWUwZjY5
YmM5Y2E2NTkzZjJmMDg5ZDI5YzlmNzVkZTc4MWQzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcApAQCAtMjcsNyArMjcsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKLSNpbmNs
dWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtMTA1LDEwICsxMDQs
MTIgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCiAgICAg
cmV0dXJuIG1vbml0b3JJbmZvLnJjV29yazsKIH0KIAotRGVzdGluYXRpb25Db2xvclNwYWNlIHNj
cmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKKyNpZiBVU0UoQ0cpCitDR0NvbG9yU3BhY2VSZWYgc2Ny
ZWVuQ29sb3JTcGFjZShXaWRnZXQqKQogewotICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKIH0KKyNlbmRpZgog
CiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAKaW5kZXggYmJk
ZDFjZTc2MjQxZDkzM2FkYTljNDNmYWJhZTQ5MTJjYmZhNjRlMS4uNmI4NTlkZTdhMTZiZjA1NjEw
ZjcwY2M1NjFjMTUzNThhMGY0YjZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAotI2luY2x1ZGUgIkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCkBAIC04MiwxMSArODEsNiBAQCBG
bG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdldCkKICAgICByZXR1cm4g
c2NyZWVuUmVjdCh3aWRnZXQpOwogfQogCi1EZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29s
b3JTcGFjZShXaWRnZXQqKQotewotICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKTsKLX0KLQogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KikKIHsK
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgK
aW5kZXggMGY3NzZjNDI4NmRhZmRmZGQ2OWZmMDJhMjVkZWI3NWZlYWEzYjE4My4uNTRiZWEzN2Ux
MmNhZjBkMmYxMWUwNjE5MzU1NzQxNTcwZDY5OTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaApAQCAtMTgsNyArMTgsNiBAQAogICovCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQz
RC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
QEAgLTMzLDcgKzMyLDggQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0jaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xv
clNwYWNlQ0cuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPHd0
Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIE9wdGlvbmFs
PERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IERldmljZTo6RnJhbWVEYXRhOjpMYXllckRh
dGE6OmRlY29kZShEZWNvCiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdXJmYWNlU2VuZFJpZ2h0KSkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJD
b3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgbGF5ZXJEYXRhLnN1cmZh
Y2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzdXJm
YWNlU2VuZFJpZ2h0KSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CiAjZW5kaWYKICAg
ICByZXR1cm4gbGF5ZXJEYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNw
cAppbmRleCAzYmY3ODZjY2ZlMzI0ZTY0NjYyNTIwZmE3NmI3MjQ0ZjllYjZkNDAzLi5mNWFiZDJi
NzM0ZmU1ODA1NTk1ZWJjNTY1Yjk3OWY4YTQ2ODU4Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcApAQCAtMTExLDkgKzExMSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IENTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IEZpCiAgICAgICAgIGVmZmVjdEVsZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5n
ZXQoKSk7CiAgICAgICAgIGlmIChlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCkpIHsKICNpZiBFTkFC
TEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICAgICBlZmZl
Y3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5zdHls
ZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJw
b2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkg
OiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgICAgICAgICBlZmZlY3QtPnNl
dE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2
Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlv
bjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKTsKICNlbHNlCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9w
ZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQik7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLT5hZGQoZWZmZWN0
RWxlbWVudC5yZXN1bHQoKSwgZWZmZWN0KTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBib29sIENTU0Zp
bHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIG9wZXJhdGlvbgogICAgICAgICAgICAgLy8gVW5saWtlIFNWRyBGaWx0ZXJzIGFuZCBDU1NG
aWx0ZXJJbWFnZXMsIGZpbHRlciBmdW5jdGlvbnMgb24gdGhlIGZpbHRlcgogICAgICAgICAgICAg
Ly8gcHJvcGVydHkgYXBwbGllZCBoZXJlIHNob3VsZCBub3QgY2xpcCB0byB0aGVpciBwcmltaXRp
dmUgc3VicmVnaW9ucy4KICAgICAgICAgICAgIGVmZmVjdC0+c2V0Q2xpcHNUb0JvdW5kcyhjb25z
dW1lciA9PSBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyRnVuY3Rpb24pOwotICAgICAgICAgICAgZWZm
ZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZmlsdGVy
T3BlcmF0aW9uLnR5cGUoKSAhPSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewogICAgICAg
ICAgICAgICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUocHJldmlvdXNFZmZl
Y3QpIH07CkBAIC0zNDQsMTEgKzM0NCwxMSBAQCB2b2lkIENTU0ZpbHRlcjo6YWxsb2NhdGVCYWNr
aW5nU3RvcmVJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleAogICAg
IEludFNpemUgbG9naWNhbFNpemUgeyBtX3NvdXJjZURyYXdpbmdSZWdpb24uc2l6ZSgpIH07CiAg
ICAgaWYgKCFzb3VyY2VJbWFnZSgpIHx8IHNvdXJjZUltYWdlKCktPmxvZ2ljYWxTaXplKCkgIT0g
bG9naWNhbFNpemUpIHsKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgICAgIHNldFNvdXJjZUltYWdl
KEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdl
dENvbnRleHQsIGZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpKTsKKyAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6
OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgZmls
dGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdS
QTgpKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAg
ICAgUmVuZGVyaW5nTW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6
OkFjY2VsZXJhdGVkIDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAg
IHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIGZp
bHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KSk7CiAjZW5kaWYKICAgICB9CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gdHJ1
ZTsKQEAgLTM4MiwxMiArMzgyLDEyIEBAIHZvaWQgQ1NTRmlsdGVyOjphcHBseSgpCiAgICAgaWYg
KG1fZmlsdGVyUmVuZGVyZXIpIHsKICAgICAgICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZl
Y3RzKGVmZmVjdCk7CiAgICAgICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyLT5oYXNSZXN1bHQoKSkg
ewotICAgICAgICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgICAgICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3Vs
dENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KICAgICBlZmZlY3QuYXBwbHkoKTsKLSAgICBlZmZlY3Qu
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CisgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKTsKIH0KIAogTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFn
ZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3Qg
TGF5b3V0UmVjdCYgZGlydHlSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMDI1NDIyNWJiMzEzOGMzODJjMzY4YjA5NDhk
NjVhZTZmYjBiN2MwYi4uOGVmZmMwOTIyNmUzZDk4ZWRjZjNiZDRiODE0MDVlOWI2YjM2MzNkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCkBAIC04NzYsNyArODc2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRG
aWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAg
bWFza1JlY3QuaW50ZXJzZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAKICAg
ICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAgbWFza0ltYWdlID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgICAgIG1hc2tJbWFnZSA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJ
bWFnZS5nZXQoKSwgbWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA0OWI3MmQx
NGMzYmQ2NjI2MjFlNzZkNjdjYzY2ZWU1YTI1Yzc0ZGZlLi5mYjYxZTU0ZTRhOGU5OWFjNjY5NGY3
YzM0ZDBmZWU4ZjFkMDI2OTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzI2Nyw3ICszMjY3LDcgQEAgc3RhdGljIFJlZlB0cjxQ
YXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0
aW9uLCBGbG8KIHsKICAgICBjb25zdCBGbG9hdFNpemUgdGlsZVNpemUgeyAzMiwgMTggfTsKIAot
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsK
KyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIodGlsZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggOTE1YmI1M2RhNzlkM2Q2
MjQ5MzcwMTY0MzUxOWFkODAwMDIxNTVhZC4uZDk3MzYyMDdiMDczNTQ0MTFmYWM4ZTI2YjJlNGQ3
NWQxY2JjNDIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtMTk4MywxMSArMTk4MywxMSBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjpwYWludFN5c3Rl
bVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IFBhaW50SW5mbyYgcGFpbgogICAgIElP
U3VyZmFjZVJlZiBzdXJmYWNlOwogICAgIGlmICh1c2VTbWFsbEJhZGdlKSB7CiAgICAgICAgIGlm
ICghbV9zbWFsbEJhZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1cmZhY2Ug
PSBJT1N1cmZhY2U6OmNyZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFkZ2VEaW1l
bnNpb24gfSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgICAgICAgICAgbV9z
bWFsbEJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgc21hbGxCYWRnZURpbWVuc2lv
biwgc21hbGxCYWRnZURpbWVuc2lvbiB9LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKICAgICAgICAg
c3VyZmFjZSA9IG1fc21hbGxCYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoIW1fbGFyZ2VCYWRnZVN1cmZhY2UpCi0gICAgICAgICAgICBtX2xhcmdlQmFk
Z2VTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9uLCBsYXJn
ZUJhZGdlRGltZW5zaW9uIH0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICAg
ICAgICAgIG1fbGFyZ2VCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IGxhcmdlQmFk
Z2VEaW1lbnNpb24sIGxhcmdlQmFkZ2VEaW1lbnNpb24gfSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7
CiAgICAgICAgIHN1cmZhY2UgPSBtX2xhcmdlQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAg
fQogICAgIFttX2NpQ29udGV4dC5nZXQoKSByZW5kZXI6dHJhbnNsYXRlZEltYWdlIHRvSU9TdXJm
YWNlOnN1cmZhY2UgYm91bmRzOmJhZGdlUmVjdCBjb2xvclNwYWNlOnNSR0JDb2xvclNwYWNlUmVm
KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDEx
NjdiOGNmMTg1ZjUzMzFkZDFiYTRiMTBiMjEwMzVkY2M3YmRlNTYuLjJjYjU3MjYyMTk3ZTViMzc5
MDg4MjRjMWFjNGQwNmFlMGZiY2M4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KQEAgLTEzMDksNyArMTMwOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6
OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0
IFBhCiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9n
cmVzcz4ocmVuZGVyT2JqZWN0KTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRl
ck9iamVjdC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYm9vbCBpc0luZGV0
ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpIDwgMDsKLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0
LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2Nh
bGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGFpbnRJbmZvLmNvbnRleHQo
KSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggNzU5ZjQ2YTJiMmU3Nzk5
Mjg2YzI1YjM5MThiZTIzMmZmMzhmZTZlYS4uZjY1N2RlYzBkNGZjYTZmNjQzOGFlMTg2OGI0YjZl
ZmQxNjA2NWNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAK
QEAgLTE4MSw3ICsxODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVS
YXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgIEludFJlY3Qg
bWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwogICAgIGF1dG8gaW50ZXJ2YWxz
ID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwg
LW1hcmdpblJlY3QueSgpKTsKICAgICAvLyBGSVhNRSAoMTQ5NDIwKTogVGhpcyBidWZmZXIgc2hv
dWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBh
dXRvIGNyZWF0ZVNoYXBlID0gWyZdKCkgewogICAgICAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFr
ZVVuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUo
KSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3Jl
YXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICBpZiAo
aW1hZ2UpCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBJbnRSZWN0
KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAotICAgIFBpeGVsQnVmZmVyRm9ybWF0
IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OworICAgIFBpeGVs
QnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsK
ICAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKGZvcm1h
dCwgeyBJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpIH0pOwogICAgIAogICAgIC8vIFdlIGNv
dWxkIGdldCB0byBhIHZhbHVlIHdoZXJlIFBpeGVsQnVmZmVyIGNvdWxkIGJlIG51bGxvcHQuIEEg
Y2FzZSB3aGVyZSBJbWFnZVJlY3Quc2l6ZSgpIGlzIGh1Z2UsIFBpeGVsQnVmZmVyOjp0cnlDcmVh
dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCBjZjRhNzRjYjg4YTUyOWViYTIwZDc3NjI3OTg5ZTY2
MmZjYzQxOTcyLi44ZmFlMzVkZDZlZjhmNTAwZDQ1ZjNmNWEyNDExNzFmZjAwOTQ0ZWY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXIuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGMKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3Rl
bShyZW5kZXJlcik7CiAgICAgaWYgKCFjbGlwcGVyRGF0YS5pc1ZhbGlkRm9yR2VvbWV0cnkob2Jq
ZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtKSkgewogICAgICAgICAvLyBGSVhNRSAo
MTQ5NDY5KTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkg
dW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBuZXN0ZWQg
Y2xpcHBpbmcsIHRob3VnaC4KLSAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1dGVUcmFu
c2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAmY29udGV4dCk7CisgICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRl
VHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggYWVjNjY5NWMyODc4ZWQy
OGMzODk0OWNkOTBhNTgwZTk5NmEyYTZhZS4uNDk5NGU1ZjJjNDc3ZWMyZWM5OTdiMGY4ZDIzYjI3
YjY1OGMzMDc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTEwNCw5ICsxMDQsOSBAQCBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxk
UHJpbWl0aXZlcyhTVkdGaQogICAgICAgICBlZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZH
TGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM+KCZlbGVtZW50LCBmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSwg
dGFyZ2V0Qm91bmRpbmdCb3gpKTsKICAgICAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXIoKSkgewog
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAg
ICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCktPnN0
eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRl
cnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0Io
KSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICAgICAgICAgIGVmZmVjdC0+
c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5
bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpM
aW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgOiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IpOwogI2Vsc2UKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXItPmFkZChlbGVtZW50LnJl
c3VsdCgpLCBXVEZNb3ZlKGVmZmVjdCkpOwpAQCAtMTk4LDkgKzE5OCw5IEBAIGJvb2wgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IFJlbmRlCiAKICAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSByZW5kZXJlci5zZXR0aW5n
cygpLmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJh
dGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKICNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCk7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOwogI2Vsc2UKLSAgICBhdXRvIGNvbG9yU3Bh
Y2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKKyAgICBhdXRvIGNvbG9yU3BhY2Ug
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CiAjZW5kaWYKICAgICBhdXRvIHNvdXJjZUdy
YXBoaWMgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRh
LT5kcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zvcm0sIGNvbG9yU3BhY2UsIHJlbmRlcmlu
Z01vZGUsIGNvbnRleHQpOwogICAgIGlmICghc291cmNlR3JhcGhpYykgewpAQCAtMjgxLDcgKzI4
MSw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAgICAgICAgICAgICBmaWx0ZXJEYXRhLnN0
YXRlID0gRmlsdGVyRGF0YTo6QXBwbHlpbmc7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBs
eSgpOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVk
KCk7Ci0gICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRy
YW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKICAg
ICAgICAgfQogICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QnVpbHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwCmluZGV4IDdmNGEyM2M0MGZhMzBjMWEzMzkyZDMzZGE4OTM0MTc5
NTVmMWIyZTkuLjZkMjlmN2UxYzlhZDU1OTIyMDBiMzJjZGEzYjkxZjI4ZmI0YzkyM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3Jl
YXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KEdyYXBoaWNzQ29udGV4dComIGNv
bgogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVt
KCp0ZXh0Um9vdEJsb2NrKTsKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSB0ZXh0Um9vdEJs
b2NrLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAgYXV0byBtYXNrSW1h
Z2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwg
YWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0
LT5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSk7CiAg
ICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNw
cAppbmRleCAzODM3M2JlZmIwMTYwNTUwYmFlYTJhNzI0MTg0ZjE0Y2FjMTg4ZWQyLi43NzVjZDk4
ZTVkZTYyYWE5NzE5OGZhM2UwYzNmZjFhYzJjYzY1NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAt
NzEsOSArNzEsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNl
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICBjb25zdCBTVkdS
ZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7CiAKICNpZiBFTkFCTEUo
REVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGF1dG8gY29sb3JT
cGFjZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50ZXJwb2xhdGlv
bjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKKyAgICAgICAgYXV0byBjb2xvclNwYWNlID0gc3Zn
U3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJS
R0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgOiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0I7CiAjZWxzZQotICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKTsKKyAgICAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCOwogI2VuZGlmCiAKICAgICAgICAgLy8gRklYTUUgKDE0OTQ3MCk6
IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxl
cmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEgbWFza2luZywg
dGhvdWdoLgpAQCAtOTIsNyArOTIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjph
cHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVu
dEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKK2Jvb2wgUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBt
YXNrZXJEYXRhLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFz
a2VyRGF0YS0+bWFza0ltYWdlLT5jb250ZXh0KCk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2Vy
RGF0YSogbWFza2VyRGF0YSwgYwogICAgIH0KIAogI2lmICFVU0UoQ0cpCi0gICAgbWFza2VyRGF0
YS0+bWFza0ltYWdlLT50cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBjb2xvclNwYWNlKTsKKyAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9y
bUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb2xvclNwYWNlKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKaW5k
ZXggYjE3ODczZjQ4OTczZDk0ZjYzYWNkMjJjOWVhMDBjYmUxYjRiMDgyYy4uYTFmZDg1NTI4OWY4
YTNlNjBmNDdiODg4NmFiMTAwODM4NjgxZTVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaApAQCAtNTgsNyArNTgs
NyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciI7IH0KIAotICAgIGJvb2wgZHJh
d0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBSZW5kZXJPYmplY3QqKTsKKyAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJbWFn
ZShNYXNrZXJEYXRhKiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBSZW5kZXJPYmplY3QqKTsKICAg
ICB2b2lkIGNhbGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QoKTsKIAogICAgIEZsb2F0UmVj
dCBtX21hc2tDb250ZW50Qm91bmRhcmllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCAwZTU5NmIw
ODk4NDdlNzZjYzc4YjllNDkxMDY2NWJiZDhjNDZlY2ZjLi45NGMyOWQzYjY0ODA2M2ExYjdlMWNh
ODk3N2Q5NGUzYWM2ODYwMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0yNTMsNyArMjUzLDcg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZUltYWdlVHJhbnNmb3Jt
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLAogUmVmUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRS
ZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJ
bWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSBjb25zdAogewogICAgIGNsYW1wZWRBYnNvbHV0
ZVRpbGVCb3VuZGFyaWVzID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRSZWN0KGFic29sdXRlVGlsZUJv
dW5kYXJpZXMpOwotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGls
ZUJvdW5kYXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCByZW5kZXJpbmdNb2Rl
KTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdl
QnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHJlbmRlcmluZ01vZGUpOwogICAgIGlm
ICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjFk
OTY4NzQ3MGViZTc4NzM2NTEyMmQwNTg4MzIyZWM0MTRjZWViNi4uYjJmN2M3YTYwZmM3Mjg0ZWVj
NjI5NjdlYzMwZjA1MjkxODA0ZTdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgQWZm
aW5lVHJhbnNmb3JtIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9u
VG9PdXRlcm1vc3RDb29yZGluYXQKICAgICByZXR1cm4gYWJzb2x1dGVUcmFuc2Zvcm07CiB9CiAK
LVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFi
c29sdXRlVHJhbnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0
YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgLy8gRG9uJ3QgY3JlYXRlIGVtcHR5
IEltYWdlQnVmZmVycy4KQEAgLTI2NCw3ICsyNjQsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFy
ZwogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQogewogICAgIEludFNpemUgY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZShj
bGFtcGVkUmVjdC5zaXplKCkpOwogICAgIEZsb2F0U2l6ZSB1bmNsYW1wZWRTaXplID0gcm91bmRl
ZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgU1ZH
UmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChSZWZQdHI8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1ZmZlcikKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBm
b3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50
U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
bV9wYWludEluZm8tPmNvbnRleHQoKSk7CisgICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNp
emUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgbV9wYWludEluZm8tPmNvbnRleHQo
KSk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuaAppbmRleCA0Y2ZiMjZhMjQ3OTExZDczOTUyN2RkOTg5MGM4MjkzNWU1MDY4NGQ1
Li4yMWUzN2Y2YzdlZmM4ZTFmNzc4M2Y4ZmE2MzUzMjY5NDdiYzYwNDNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNjAs
OCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJl
bmRlckVsZW1lbnQmLCBQYWludEluZm8mLCBOZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUgPSBEb250
U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgYm9vbCBpc1JlbmRlcmluZ1ByZXBhcmVkKCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAmIFJlbmRlcmluZ1ByZXBhcmVkOyB9CiAKLSAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRl
cmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9
IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVk
UmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKTsKICAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDAwOTRmNDdk
NDY0MDFkNTlhY2I4NWY3NjU0M2RhNjJkNzM4YzBmZTYuLjA3YzNmMjMxMGI2NWJhYTBhYTA1ZDRm
MGQzNDZjNjdjMmI1NDJkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5h
dGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFp
bmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgRmxvYXRS
ZWN0IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VCdWZm
ZXJTaXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2FsZS5o
ZWlnaHQoKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdl
QnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRl
eHQpOwogICAgIGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAg
ICAgICByZXR1cm47CiAgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29u
dGFpbmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZl
clNpemUsIHpvb21lZENvbnRhaW5lclJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRleCBjNjMyOGNmYjVlMTRkMDc3MWIz
MDVmOGJlYTcwZTU2NjE1NTljODIzLi4wMzNjMjgwN2VjZjg4NDY0MzBlZjRhNDI4MThlYmYwZmU4
Y2JjY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcApAQCAtOTMsOCArOTMsOCBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFtX2ltYWdlICYmICFyZW5kZXJlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkKLSAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpKTsKKyAgICAvLyBGRUltYWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IKKyAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CiAKICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2Ug
PSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCmluZGV4IGU5MGIzMTFiNzE1NWU0Njg0NDU2ZGJhZDJiMThjMzQ2NzA4YTgyNWUuLjY3MTIx
MGJhYTYyNTBiZGU4ZGFjNWNlOGIyYzBkMDRkZTAyZmQ5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC00NCw3
ICs0NCw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmU6OkNvbmNy
ZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsCiAgICAgdXNpbmcgQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXI6OnB1dFBpeGVsQnVmZmVyOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFdl
YkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCmluZGV4IGQ2MjhiNmZjMDY3MjRjNzI2NzE0MDllN2Q0NWFkNDdiNjZmNjYy
MTcuLmZlNzVhYWY2M2NlYTZmMTYyZjlhY2Y4ZmIwN2IyNjQzOTQyMWZhOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlm
aQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkRmx1
c2goZmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBB
U1NFUlQocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCB8fCByZW5k
ZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwpAQCAtNDk1LDggKzQ5
NSw2IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgICogU2VlIHRoZSBjb21tZW50IGF0
IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aHkuICovCiAKICAgICBzd2l0Y2gg
KHR5cGUpIHsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9u
KTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKICAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsaXBQYXRoOgpAQCAtNTIzLDggKzUyMSw2IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJ
dGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVj
CiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgogICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUm91bmRlZFJlY3Q+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpHZXRQaXhl
bEJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6R2V0
UGl4ZWxCdWZmZXI+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIGRlY29k
ZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6UHV0UGl4ZWxCdWZmZXI+KGRhdGEsIGxlbmd0aCwgaGFu
ZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFz
aDoKQEAgLTU0NCw2ICs1NDAsNyBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4g
V0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDbGlwT3V0OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9JbWFn
ZUJ1ZmZlcjoKKyAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kczoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5h
dGVDVE06CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1l
bnRNYXJrZXI6CkBAIC01ODQsNiArNTgxLDcgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWMKICAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlTGluZToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6VHJhbnNsYXRlOgorICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpHZXRQaXhl
bEJ1ZmZlcjoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggMTAwMDM4OTVjMDQ5
NDg4NmI0ZGFjNzRmNDIxMzY2MDFiYTg2YzRiNC4uODE0MjM4ZTIxZWNkNjM4NjczZGFhMWRmZmNk
ZjExOTgwOWVjOTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC00NCwxOCArNDQsMTQgQEAK
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFz
cyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07CiB9Ci0KLWNsYXNzIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIE5hdGl2ZUltYWdlOwotCitlbnVtIGNsYXNz
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01v
ZGUgOiBib29sOwotCiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTI1LDcgKzEyMSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAog
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJDb3Jl
OjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICB2b2lkIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1l
c3NhZ2VBcmd1bWVudHMmKTsKICAgICB2b2lkIHVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVs
QnVmZmVyKHVpbnQzMl90IGJ5dGVDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYmKTsKICAgICB2b2lkIHNlbWFwaG9yZUZvckdldFBp
eGVsQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTZW1hcGhvcmUmKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAppbmRleCAxZjdlMTQzMGE3ZDc2NDlkOTY1ZTI4
OTFhYzJlOGU1MjlhMjAxN2FkLi4wMDgxYzEyZmRjYmM4ZWU3NzUwNDgwYTU0NTFlYjE5OTU0NTU3
Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKQEAgLTExMywyOCArMTEzLDI4IEBAIHZv
aWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEoSW1hZ2VEZWNvZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVDb3VudCwg
aW1hZ2VEZWNvZGVyLT5zaXplKCksIGltYWdlRGVjb2Rlci0+aGFzVHJhY2soKSwgV1RGTW92ZShm
cmFtZUluZm9zKSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6
ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRS
aWdodD4mJiwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6
ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRS
aWdodD4mJiwgQ29sb3JTcGFjZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgT3B0aW9u
YWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIENvbG9yU3BhY2VEYXRhIGNv
bG9yU3BhY2VEYXRhOwogICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RG
TW92ZShjb2xvclNwYWNlKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2Vu
ZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgYXV0byBmcmFtZUltYWdlID0gbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVy
KS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghZnJhbWVJbWFnZSkg
ewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUo
Y29sb3JTcGFjZSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdo
dCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmIChhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZShmcmFtZUlt
YWdlLmdldCgpKSkgewogICAgICAgICBzZW5kUmlnaHQgPSBzdXJmYWNlLT5jcmVhdGVTZW5kUmln
aHQoKTsKLSAgICAgICAgY29sb3JTcGFjZSA9IHN1cmZhY2UtPmNvbG9yU3BhY2UoKTsKKyAgICAg
ICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0gc3VyZmFjZS0+Y29sb3JTcGFjZSgpOwog
ICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92
ZShjb2xvclNwYWNlKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQp
LCBXVEZNb3ZlKGNvbG9yU3BhY2VEYXRhKSk7CiB9CiAKIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHk6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKaW5kZXggMTFiM2Fl
MTllNjRiOTNkN2Y0NGY1ZmE2ZTg3Y2EyYzQ3ZTRlOGMzNi4uNDhmODcwZDBjNTcwZjdjZWRhZjYw
NzkzYzYyOTljMDdhODJjYzdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUUkVBREVSKQog
CisjaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURl
Y29kZXJBVkZPYmpDLmg+CkBAIC01Niw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxl
dGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0
RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBsb25n
IGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSk7CiAgICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCBmcmFtZUNvdW50LCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBPcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7Ci0gICAgdm9pZCBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBz
aXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2Vu
ZFJpZ2h0PiYmLCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+JiYpPiYm
KTsKKyAgICB2b2lkIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2Rl
cklkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYpPiYmKTsKICAgICB2b2lk
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBz
aXplX3QgaW5kZXgpOwogCiAgICAgdm9pZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWQoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggMjg0N2M1NjJjM2ZjY2JiYzM5ZGU5ZmRmOTc0NGQ1MmZmN2RkZmEx
OC4uN2E5YzM5ODYzMzk2ZjkwMTcyMjFlODRiYmE5MTNmZTk5MDFkN2QyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdl
cyAtPiBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBEZWxl
dGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICBTZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAgICAgU2V0RGF0YShX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBm
cmFtZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5
bmNocm9ub3VzCi0gICAgQ3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChPcHRpb25hbDxNYWNo
U2VuZFJpZ2h0PiBzZW5kUmlnaHQsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKKyAgICBDcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRl
eCkgLT4gKE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodCwgc3RydWN0IFdlYktpdDo6
Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBDbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXpl
X3QgaW5kZXgpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBiN2EyOGRk
NzU3NGE1NzM4MzM2ZjY2MWU0ODM3MGRlYmNhMmY5NTAyLi4zMGZhMTlhMGY1NTUzZTkxYjM4ZDk0
ZjM2OGVkZTk3YmU1MTQ3ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0y
MTIsMTkgKzIxMiwxOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxp
ZEZyb250QnVmZmVyKCkKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6SU9T
dXJmYWNlOgogICAgICAgICBpZiAoc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nKQotICAgICAgICAg
ICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJl
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCkpOworICAgICAgICAgICAg
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1h
Z2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQ+Ojpj
cmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUs
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVs
bHB0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Qml0bWFwOgogICAgICAgICBp
ZiAoc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nKQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5p
bWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPFVuYWNj
ZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3Nj
YWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQo
KSwgbnVsbHB0cik7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2Vi
Q29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7
CiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIGNh
c2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgbV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7
CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgfQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVy
ICpsYXllciwgTGF5ZXJDb250CiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OklP
U3VyZmFjZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewogICAgICAgICAg
ICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7Ci0gICAgICAgICAgICAgICAg
YXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdU
Rk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtYWNoU2VuZFJpZ2h0KSwgV2ViQ29yZTo6c1JH
QkNvbG9yU3BhY2VSZWYoKSk7CiAgICAgICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBzdXJm
YWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmNwcAppbmRleCAwNDY0YTIwZDQwZGRiMzBhZWEyMDFjNjRlZDBlMjIyYWJhMTRiYzc2Li5iMTBk
NWE2M2MxYTU0ODRlYTJkMWYzN2I5NWRkNTU1ZDM5ZTAzOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKQEAgLTc0LDcgKzc0LDEwIEBAIHZvaWQgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rl
ciA8PCBjb2xvclNwYWNlIDw8IGlzT3BhcXVlOworICAgIGVuY29kZXIgPDwgaXNPcGFxdWU7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOworI2VuZGlmCiAj
aWYgVVNFKERJUkVDVDJEKQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjplbmNvZGVIYW5kbGUo
ZW5jb2Rlciwgc2hhcmVkUmVzb3VyY2VIYW5kbGUpOwogCkBAIC04NSwyOCArODgsMjEgQEAgdm9p
ZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAjZW5kaWYKIH0KIAotYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24mIHJlc3Vs
dCkKK2Jvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7
Ci0gICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwotICAgIGlmICghY29sb3JTcGFjZSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBPcHRpb25hbDxib29sPiBpc09wYXF1ZTsKLSAgICBkZWNvZGVyID4+
IGlzT3BhcXVlOwotICAgIGlmICghaXNPcGFxdWUpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHQgPSBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29s
b3JTcGFjZSksICppc09wYXF1ZSB9OwotCisjZW5kaWYKICNpZiBVU0UoRElSRUNUMkQpCiAgICAg
YXV0byBwcm9jZXNzU3BlY2lmaWNIYW5kbGUgPSBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2Rl
SGFuZGxlKGRlY29kZXIpOwogICAgIGlmICghcHJvY2Vzc1NwZWNpZmljSGFuZGxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQuc2hhcmVkUmVzb3VyY2VIYW5kbGUgPSBwcm9j
ZXNzU3BlY2lmaWNIYW5kbGUudmFsdWUoKTsKKyAgICBjb25maWd1cmF0aW9uLnNoYXJlZFJlc291
cmNlSGFuZGxlID0gcHJvY2Vzc1NwZWNpZmljSGFuZGxlLnZhbHVlKCk7CiAjZW5kaWYKLQogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmlu
ZGV4IDAzNjIxYjQyMWU5YmRkMzk2YzUwZjVmYTkzN2JjNWRlNmY4NTk4YWQuLjQ1ZGI4OGY2ZTQ0
ZDg5NWJmYWMxNzhjNTkzMjUyZDFhNTRhYmNmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oCkBAIC0yNiwxMiArMjYsMTUgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiU2hhcmVkTWVtb3J5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtSW1hZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29sb3JTcGFj
ZURhdGEuaCIKKyNlbmRpZgorCiAjaWYgVVNFKERJUkVDVDJEKQogaW50ZXJmYWNlIElEMkQxQml0
bWFwOwogaW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwpAQCAtNTIsOCArNTUsMTAgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXAgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENvbmZp
Z3VyYXRpb24gewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+IGNvbG9yU3BhY2U7CiAgICAgICAgIGJvb2wgaXNPcGFxdWUgeyBmYWxzZSB9OworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOworI2VuZGlm
CiAjaWYgVVNFKERJUkVDVDJEKQogICAgICAgICBtdXRhYmxlIEhBTkRMRSBzaGFyZWRSZXNvdXJj
ZUhhbmRsZSB7IG51bGxwdHIgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA5NjNmYjQ4YzlhMDk5OTg5NWFhYmY5ZmUyMmNiZjNm
NDc2MWIwMmY4Li5jZThjYzAzNTlhODcxYWZlYWI2YmU2ZTNjNWEzODdjMThlMjE3Y2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtODIsOCAr
ODIsNiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJBcmd1bWVu
dENvZGVyc0NGLmgiCi0KIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggZmIyYTZmYjkxNGM3Zjk2ZGNjOTM3NDM3YTAyNDgzOTk5N2I1NzJiNS4uMzEzODYw
YmQ3MDY0ZmU5ZmRmMTMxNzY1ZmNiYTI3YWE5MjllNWJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTMyNSwxMSArMzI1
LDggQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNl
TG9hZENsaWVudCA9IFdURk1vdmUoKmhhc1Jlc291cmNlTG9hZENsaWVudCk7CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPj4g
Y29sb3JTcGFjZTsKLSAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFjb2xvclNw
YWNlKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb2xvclNwYWNlKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBX
VEZNb3ZlKCpjb2xvclNwYWNlKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
dXNlU3lzdGVtQXBwZWFyYW5jZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCAxM2ZhMzBlZjE2NmIwOGE1MmEzOTQ5NWExY2Y2NzEwMTA2NGQzMGRhLi5mZjE0ZjRh
NThlNGNiZDdlNjdjZTExMTI3ODczZTZkNWVlNmNlYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0zNiw3ICszNiw2IEBACiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZp
dHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRN
aWxlc3RvbmUuaD4KQEAgLTUwLDYgKzQ5LDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykKKyNp
bmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CiAj
ZW5kaWYKQEAgLTE0Myw3ICsxNDYsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCB7IGZhbHNlIH07CiAK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlPiBjb2xvclNwYWNlOworICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7CiAgICAg
Ym9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1FVEFfVklFV1BP
UlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBD
Ry5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5k
ZXggMzZkYzI0YjgyZmRlZWMxNTU1MTA0NzY5OTRlODdkYjFkNzY2MmRhNy4uMDUwYjA0OWU4NWEw
Mzc1OTI4YjBkNjQ3ZjFiMGNhYzRlZTExYmI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKICAgICAKIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZShjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAg
cmV0dXJuIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA/IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFj
ZS0+cGxhdGZvcm1Db2xvclNwYWNlKCkgOiBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpOwor
ICAgIHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgpID86
IHNSR0JDb2xvclNwYWNlUmVmKCk7CiB9CiAKIHN0YXRpYyBib29sIHdhbnRzRXh0ZW5kZWRSYW5n
ZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmZDk3
Mzk0NWViOTk1N2JhNDkzOGY2YmYwYmM4YWRmMWU4OWZhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBDb2xvclNwYWNlRGF0YV9oCisjZGVmaW5lIENvbG9yU3Bh
Y2VEYXRhX2gKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0cnVjdCBDb2xvclNwYWNlRGF0YSB7CisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6
OkRlY29kZXImLCBDb2xvclNwYWNlRGF0YSYpOworCisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFj
ZVJlZj4gY2dDb2xvclNwYWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBDb2xvclNwYWNlRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvQ29sb3JTcGFjZURhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFj
ZURhdGEubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMyNDg5OWI4YjlhYThkZWQ2OWJkNGQ5ZmI3MDE0MzIyZTBl
ZjRmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNw
YWNlRGF0YS5tbQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgorCisjaW1wb3J0ICJBcmd1bWVudENvZGVy
c0NGLmgiCisjaW1wb3J0ICJEZWNvZGVyLmgiCisjaW1wb3J0ICJFbmNvZGVyLmgiCisjaW1wb3J0
IDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBDb2xvclNw
YWNlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KGNnQ29sb3JTcGFjZSk7CisgICAgaWYgKGNnQ29sb3JT
cGFjZSkKKyAgICAgICAgZW5jb2RlciA8PCBjZ0NvbG9yU3BhY2U7Cit9CisKK2Jvb2wgQ29sb3JT
cGFjZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbG9yU3BhY2VEYXRhJiBj
b2xvclNwYWNlRGF0YSkKK3sKKyAgICBib29sIGhhc0NHQ29sb3JTcGFjZTsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhhc0NHQ29sb3JTcGFjZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghaGFzQ0dDb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFJl
dGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShjb2xvclNwYWNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGNvbG9y
U3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFdURk1vdmUoY29sb3JTcGFjZSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IGIyNjU5OWJhOGU3MDY0NjU0YjQ4YjQ1ODg4NjBmOTk4ODczYTFjYjAuLmI2YzgyZjM5OWMw
ZDc3NzA5ZDljZDhhMTNkMDliN2NmOTFlZGNlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTIwMyw2ICsyMDMsNyBAQCBTaGFyZWQvaW9zL1dlYlRvdWNoRXZlbnRJT1MuY3BwCiAKIFNoYXJl
ZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQogU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQor
U2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQogU2hhcmVkL21hYy9IYW5nRGV0ZWN0aW9uRGlz
YWJsZXJNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tCiBTaGFy
ZWQvbWFjL05hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggOGNjMzM5NzZjMzM0NjUzMzdk
NTYwMDAyMDVjM2Y1M2UxNjI4NjE0OS4uMWQzMjFkZDA3MTNkNTZmMjU5NWYyNGRhZjllNzUzYjVj
NjllN2QwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZp
ZXdJT1MubW0KQEAgLTEwMTQsNyArMTAxNCw3IEBAIC0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFw
c2hvdD4pX3Rha2VWaWV3U25hcHNob3QKICNlbHNlCiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpG
b3JtYXQgc25hcHNob3RGb3JtYXQgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQTsK
ICNlbmRpZgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdl
YkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgc25hcHNob3RGb3JtYXQpOworICAgIGF1dG8gc3VyZmFjZSA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFw
c2hvdFNpemUpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpLCBzbmFwc2hvdEZvcm1hdCk7
CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBDQVJlbmRl
clNlcnZlclJlbmRlckxheWVyV2l0aFRyYW5zZm9ybShNQUNIX1BPUlRfTlVMTCwgc2VsZi5sYXll
ci5jb250ZXh0LmNvbnRleHRJZCwgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oc2VsZi5sYXll
ciksIHN1cmZhY2UtPnN1cmZhY2UoKSwgMCwgMCwgJnRyYW5zZm9ybSk7CkBAIC0zMDc5LDcgKzMw
NzksNyBAQCAtICh2b2lkKV9zbmFwc2hvdFJlY3Q6KENHUmVjdClyZWN0SW5WaWV3Q29vcmRpbmF0
ZXMgaW50b0ltYWdlT2ZXaWR0aDooQ0dGbG9hdClpbQogICAgIE5TU3RyaW5nICpkaXNwbGF5TmFt
ZSA9IHNlbGYud2luZG93LnNjcmVlbi5kaXNwbGF5Q29uZmlndXJhdGlvbi5uYW1lOwogICAgIGlm
IChkaXNwbGF5TmFtZSAmJiAhc2VsZi53aW5kb3cuaGlkZGVuKSB7CiAgICAgICAgIFRyYWNlU2Nv
cGUgc25hcHNob3RTY29wZShSZW5kZXJTZXJ2ZXJTbmFwc2hvdFN0YXJ0LCBSZW5kZXJTZXJ2ZXJT
bmFwc2hvdEVuZCk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6
Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoaW1hZ2VT
aXplKSksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICAgICAg
YXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5k
ZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShpbWFnZVNpemUpKSwgV2ViQ29yZTo6c1JHQkNv
bG9yU3BhY2VSZWYoKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkgewogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCBiZDhkODJjNDE1NzMxMTQ2
NGY0ZWM1NWQwZTE0OWRmZTg5ODcwYmExLi43MDcwODU3YzE0NWYzNjhmYWFiYzJmOWYxOGJkZDdi
YTllYmQ4N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgKQEAgLTk0LDcgKzk0LDYgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEludFBv
aW50Owogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiAKQEAgLTE2OSw2ICsxNjgsNyBA
QCBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJv
Y2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CitzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7
CiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CiAKIGVudW0gY2xhc3MgQ29udGludWVVbnNh
ZmVMb2FkIDogYm9vbDsKQEAgLTMxMyw3ICszMTMsNyBAQCBwdWJsaWM6CiAKICAgICBOU1ZpZXcg
KmhpdFRlc3QoQ0dQb2ludCk7CiAKLSAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpOworICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKTsKIAogICAgIHZv
aWQgc2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICopOwogICAgIE5TQ29sb3IgKnVuZGVybGF5Q29s
b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KaW5kZXggZGVlMGMzNzkyYzEzYWVmYzBhNGFkN2VmODUzOWVlYWVkOTFkZTMxMi4uNzdlZjc0
Y2VkYzM1ZTUzYmExN2ZjNDAyYzI1NWMxNzZhNjIwN2Q2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQg
IkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAjaW1wb3J0ICJBUElOYXZpZ2F0aW9u
LmgiCiAjaW1wb3J0ICJBcHBLaXRTUEkuaCIKKyNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAj
aW1wb3J0ICJDb3JlVGV4dEhlbHBlcnMuaCIKICNpbXBvcnQgIkZvbnRJbmZvLmgiCiAjaW1wb3J0
ICJGdWxsc2NyZWVuQ2xpZW50LmgiCkBAIC04OSw3ICs5MCw2IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yU2VyaWFsaXphdGlvbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgotI2ltcG9ydCA8V2ViQ29yZS9E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1
cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFn
SXRlbS5oPgpAQCAtMjUwMCw3ICsyNTAwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cG9zdEZha2VN
b3VzZU1vdmVkRXZlbnRGb3JGbGFnc0NoYW5nZWRFdmVudChOU0V2ZW50ICpmbGFnc0NoYW4KICAg
ICBtX3BhZ2UtPmhhbmRsZU1vdXNlRXZlbnQod2ViRXZlbnQpOwogfQogCi1XZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQorQ29sb3JTcGFjZURh
dGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogewogICAgIGlmICghbV9jb2xvclNwYWNlKSB7
CiAgICAgICAgIGlmIChtX3RhcmdldFdpbmRvd0Zvck1vdmVQcmVwYXJhdGlvbikKQEAgLTI1MTEs
NyArMjUxMSwxMCBAQCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgV2ViVmlld0ltcGw6
OmNvbG9yU3BhY2UoKQogICAgICAgICAgICAgbV9jb2xvclNwYWNlID0gW05TU2NyZWVuIG1haW5T
Y3JlZW5dLmNvbG9yU3BhY2U7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSB7IFttX2NvbG9yU3BhY2UgQ0dDb2xvclNwYWNlXSB9OworICAgIENvbG9y
U3BhY2VEYXRhIGNvbG9yU3BhY2VEYXRhOworICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFj
ZSA9IFttX2NvbG9yU3BhY2UgQ0dDb2xvclNwYWNlXTsKKworICAgIHJldHVybiBjb2xvclNwYWNl
RGF0YTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICp1
bmRlcmxheUNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDdmOTMz
OGMyYTFiM2U3YjhhMzFmMGQ0NTllNGIxM2Q1NGY0MmUxZDcuLmJkMWU4Mzg3ZjAyNTY3MTcwNzE3
OTI1MTA5ZTgxOTE3ZDhjZTA2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
QEAgLTkzLDcgKzkzLDYgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIEN1cnNvcjsKLWNsYXNzIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTsKIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFJlZ2lvbjsK
QEAgLTE4OSw2ICsxODgsMTAgQEAgY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVu
dDsKIGNsYXNzIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q7CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorc3RydWN0IENvbG9yU3BhY2VEYXRhOworI2Vu
ZGlmCisKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKIHVzaW5nIExheWVy
SG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwogI2VuZGlmCkBAIC00MjMsNyArNDI2LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBDR1JlY3QgYm91bmRzT2ZMYXllckluTGF5ZXJCYWNrZWRX
aW5kb3dDb29yZGluYXRlcyhDQUxheWVyICopIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSA9IDA7CisgICAgdmlydHVh
bCBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNo
b3dQbGF0Zm9ybUNvbnRleHRNZW51KE5TTWVudSAqLCBXZWJDb3JlOjpJbnRQb2ludCkgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IGEyNjdhODM1NTk2NGE5OWQ1ZDA4MDM0
NjA2YTdmYTdjZThjNDc5NWUuLjBkZTQ0MzNiOTI1MmFiYjk2ODY0OGM4NmY5ODdmYWUzNGQyOWFk
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0zNSw3ICszNSw2IEBACiAjaW1w
b3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9y
dCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9u
Q29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1MYXll
ci5oPgpAQCAtMzE4LDcgKzMxNyw3IEBAIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZWx5TWFwSU9TdXJm
YWNlQmFja2luZ1N0b3JlKENBTGF5ZXIgKmxheWVyKQogewogICAgIGlmIChsYXllci5jb250ZW50
cyAmJiBDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWxheWVyLmNvbnRlbnRzKSA9PSBD
QU1hY2hQb3J0R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTWFjaFNlbmRSaWdodCBwb3J0ID0gTWFj
aFNlbmRSaWdodDo6Y3JlYXRlKENBTWFjaFBvcnRHZXRQb3J0KChfX2JyaWRnZSBDQU1hY2hQb3J0
UmVmKWxheWVyLmNvbnRlbnRzKSk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHBvcnQpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHBvcnQpLCBzUkdCQ29s
b3JTcGFjZVJlZigpKTsKICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBzdXJmYWNlID8gc3VyZmFj
ZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDY3NmM3YzMwMGM0NDg2MGZjODIyMzZiYzY0YWY2ZjUwNGI4
MzVhZTUuLjY2ZDEzZWI3MjUyNWNjOWI2YTY4ZTQ5ZWUwZjVkMWM1MmE3MjgwODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xOTgsNyArMTk4LDYgQEAgbmFtZXNw
YWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgQ29udGVudFdvcmxkOwogY2xhc3Mg
Q29udGV4dE1lbnVDbGllbnQ7Ci1jbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBF
cnJvcjsKIGNsYXNzIEZpbmRDbGllbnQ7CiBjbGFzcyBGaW5kTWF0Y2hlc0NsaWVudDsKQEAgLTM3
OCw2ICszNzcsNyBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOwogY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIAogc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOworc3Ry
dWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQ7CiBzdHJ1Y3Qg
RG9jdW1lbnRFZGl0aW5nQ29udGV4dDsKIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVx
dWVzdDsKQEAgLTExMzIsNyArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1ha2VGaXJzdFJl
c3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRl
cigpOwogCi0gICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsK
KyAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
RVJWSUNFX0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaAppbmRleCA2MzRkNzEzZGQxZmNiMDc4ZGQ5ZDY4NTg0OWU1YTJhNzlmYTA4
YTFhLi4wZmRkMzJmNTViOTJiODg0YWMzNjA5MDdjYTZkZDZkMmNmMjQ5ZmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtNzYsNyAr
NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNWaWV3SW5XaW5kb3coKSBvdmVycmlkZTsKICAg
ICBib29sIGlzVmlzdWFsbHlJZGxlKCkgb3ZlcnJpZGU7CiAgICAgTGF5ZXJIb3N0aW5nTW9kZSB2
aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CisgICAgQ29sb3JTcGFjZURhdGEgY29s
b3JTcGFjZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVtb3RlTGF5ZXJUcmVlUm9vdE5vZGUo
UmVtb3RlTGF5ZXJUcmVlTm9kZSopIG92ZXJyaWRlOwogICAgIENBTGF5ZXIgKmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDM3MDM1MTM1ODJj
NzcxYjkwYjg4ZGQ4YzE2OTI4NjMwM2NiZDBkYjYuLmE2MTY4ZTE3YTViN2UzMjZkOTM3ZjZiNzAy
NmNlYTA5ZjM0NTVmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiQVBJSGl0VGVz
dFJlc3VsdC5oIgogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCisjaW1wb3J0ICJDb2xvclNwYWNlRGF0
YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRG93bmxvYWRQcm94eS5o
IgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNjUsNyArNjYsNiBAQAogI2ltcG9y
dCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25D
b2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBA
IC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6dmlld1dpbGxNb3ZlVG9Bbm90
aGVyV2luZG93KCkKICAgICBjbGVhckFsbEVkaXRDb21tYW5kcygpOwogfQogCi1XZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgUGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UoKQorQ29sb3JT
cGFjZURhdGEgUGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UoKQogewogICAgIHJldHVybiBtX2lt
cGwtPmNvbG9yU3BhY2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KaW5k
ZXggZTYxNmFmZmRlMzZkZjRhMDFmOGJiYmJmZjA4YTMwY2U3ZmQxNGI1OS4uNWZhNjdjNzhlYTZj
NmJjNTg4NDczNjk2ODMxZmIxMmFjYTU4Yzg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHkubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
CisjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFNZXNzYWdl
cy5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXll
clRyZWVDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQppbmRleCBhMzM3NzNhYjljMGE0MWEyZjllYzM5ODZmZGM0MTBiMWI0YmJmODcz
Li43YzAyYWU4YTBkNGVkMzg5M2JhM2IyMDc1ZDAyZmFkY2FmOThkNmY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCisjaW1wb3J0
ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiQ29ubmVjdGlvbi5oIgogI2ltcG9ydCAiRGF0
YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRWRpdG9yU3RhdGUuaCIKQEAgLTUxLDcgKzUyLDYgQEAK
ICNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlM
b29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUv
R3JhcGhpY3NMYXllci5oPgpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojph
c3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkKICAgICBwYWdlQ2xpZW50KCku
YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogfQogCi1XZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgV2ViUGFnZVByb3h5Ojpjb2xvclNwYWNlKCkKK0NvbG9yU3Bh
Y2VEYXRhIFdlYlBhZ2VQcm94eTo6Y29sb3JTcGFjZSgpCiB7CiAgICAgcmV0dXJuIHBhZ2VDbGll
bnQoKS5jb2xvclNwYWNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA4Mzk5OWU1ZjMyOGVjMTQ3ZWY5ZmY0ZjUwM2E0YmU2ZGQw
ZThmODc4Li4xMWVjNmEwMTg5NjJmMDYxYjExZDI4OWJiMjFlNmUzYTVmODM3NWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2MzQs
NiArMjYzNCw4IEBACiAJCTFBMjU2RTM2MThBMUE3ODgwMDZGQjkyMiAvKiBXS05hdmlnYXRpb25B
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0aW9uQWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjU2RTM5MThBMUE3REYwMDZG
QjkyMiAvKiBXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTI4QjhDQjFDODBFRDU5MDA2RkQ3NDMgLyogV2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlRGF0
YUZldGNoT3B0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMkE0QUZEMTU4
NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENvbG9yU3BhY2VEYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQTJBNEFGRTE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JTcGFjZURhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0MxNDExN0E1RjAwMEYzNUQ0IC8qIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTJCQjZDRTE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBMkJCNkNGMTQx
MTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2Fn
ZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMTA0
MjgsNiArMTA0MzAsOCBAQAogCQkJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBBdXhpbGlh
cnlQcm9jZXNzTWFjLm1tICovLAogCQkJCUNFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2Rl
U2lnbmluZy5oICovLAogCQkJCUNFMTFBRDRGMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmlu
Zy5tbSAqLywKKwkJCQkxQTJBNEFGRTE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEu
aCAqLywKKwkJCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEubW0g
Ki8sCiAJCQkJMUFDNzVBMUMxQjMzNjk1RTAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxl
ck1hYy5tbSAqLywKIAkJCQkyRDUwMzY1RDFCQ0M3OTNGMDBFMjBCQjMgLyogTmF0aXZlV2ViR2Vz
dHVyZUV2ZW50TWFjLm1tICovLAogCQkJCUMwMkJGRjFEMTI1MTUwMkUwMDlDQ0JFQSAvKiBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IDRmYTdjMjgyZmJkMDgyY2Y4YjY3ZTgxNDBm
NGU1NTY2MDNlMWY1NzEuLmE4NjNjZTI3NzE0NjMzN2ViNmNmNzgyZjQ0N2NjOWEzZjM2ZGZlYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAK
QEAgLTQ1LDcgKzQ1LDExIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogCiBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b24gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb25maWd1cmF0aW9uKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIHsgcGFyYW1ldGVycy5jb2xv
clNwYWNlIH07CisgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b247CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0g
eyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OworI2VuZGlmCisg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CiAKIEludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
CmluZGV4IGMwYmFjMzhlZWMyZWI2NDAyNjg2YzMzZGMzZDQzY2Q0YjZkOGRmNmYuLjgyNzhiYjdm
NzczNjQwNWQ4YjAzZTkzZmU1Y2NhNGE2ODNkMDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAgICAgbWFya0NvbnRl
eHRMb3N0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBkaXNwbGF5QnVmZmVy
ID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNl
bmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBh
dXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92
ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CiAgICAgaWYg
KGRpc3BsYXlCdWZmZXIpIHsKICAgICAgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigp
OwogICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CmluZGV4IDAzNGFmYTQwYWZmNjlhYzgzMjQzODRhN2Q2ZDM2YjEwNTczZjYxYjEuLjM0ZGYxMjkz
NmQxMDIxYjQyM2YxNGRlNWRiOWQ5OTRlYjc3OThlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUCiAgICAgdXNp
bmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlc29sdXRpb25TY2FsZTsKIAogcHVibGlj
OgotICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVy
UHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFdl
YkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGF1dG8gcGFy
YW1ldGVycyA9IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgaWYg
KEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycykuaXNFbXB0
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDc5NGM4
YmJmMmI4MjU4NGVmNmM5ZDZkY2Q1YjIzYjgwOWMxMWUzZjguLjc0MTMyNzlkZWE2ODFlNDVlN2Y0
ZGUzNWMzYmZiMWI5NmM4ZDc5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Y3JlYXRlUmVtb3RlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZgogICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVy
KGltYWdlQnVmZmVyLmxvZ2ljYWxTaXplKCksIGltYWdlQnVmZmVyLnJlbmRlcmluZ01vZGUoKSwg
aW1hZ2VCdWZmZXIucmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVmZmVyLmNvbG9yU3BhY2UoKSwg
aW1hZ2VCdWZmZXIucGl4ZWxGb3JtYXQoKSwgaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCkpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCBJUEM6OlNlbmRPcHRp
b246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKLVJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCkKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCAxZTJmYzNmZTM3Y2ZhZTkxMjBk
YzE4ZTBkYWZjZTlmNjlkMDJkYzBiLi4zYmI5NjcwZjJlMDY3MGY4ZDk1OThmM2YzYmU5ZGE0ZjRi
YmUwYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTQzLDE5
ICs0MywxNSBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3Mg
SXRlbTsKIH0KLQotY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRTaXpl
OwogY2xhc3MgUGl4ZWxCdWZmZXI7Ci0KIGVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7
CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwotCiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtOTYsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1l
c3NhZ2VzIHRvIGJlIHNlbnQuCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAgICAgU3RyaW5n
IGdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25h
bDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBWZWN0b3I8dWludDhfdD4gZ2V0RGF0
YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21t
aXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRl
eCA3NTcyZTA3ZTQ0YTk3ZDQ2YjkwMmMxZWE2NzRiYzI1Zjc4ZWM2ODUzLi40M2JlYjUxNzM0YThh
MjgxZTA2OWUxN2ZiNzM5YzBkMjJkNjhjMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9T
dXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1h
cHBlZElPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlCiAgICAgaWYgKGJhY2tl
bmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1
cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIHBhcmFt
ZXRlcnMuY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0
ZXJzLnBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUo
YmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5j
b2xvclNwYWNlKSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBp
eGVsRm9ybWF0KSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwg
cGFyYW1ldGVycy5jb2xvclNwYWNlKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUp
KSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpOwogICAgIGlmICgh
c3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNw
cAppbmRleCAwZWRkOGIyZmQ2NjMzMDhiODM0NzIyZjM4MzQwMjViMDlkNGM3ZTFhLi5kZTMwYjQw
ODIwZDUyNmU2NGYyMDU5ZDQ4MWM4NDNjM2U2YjMwNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
Y3BwCkBAIC0yOCwxMiArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFW
RShBVkFTU0VUUkVBREVSKQogCisjaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRl
ICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQVZBc3NldE1JTUVU
eXBlQ2FjaGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZUNHLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JT1N1
cmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KQEAgLTE2NywxNCArMTY4LDE0IEBAIFBsYXRmb3JtSW1h
Z2VQdHIgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgT3B0aW9uYWw8TWFj
aFNlbmRSaWdodD4gc2VuZFJpZ2h0OwotICAgICAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+IGNvbG9yU3BhY2U7CisgICAgICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7CiAg
ICAgICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgobV9pZGVudGlmaWVyLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6Q3JlYXRlRnJhbWVJbWFnZUF0SW5kZXg6OlJlcGx5KHNlbmRSaWdodCwgY29sb3JT
cGFjZSksIDApKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghc2VuZFJpZ2h0
IHx8ICFjb2xvclNwYWNlKQorICAgICAgICBpZiAoIXNlbmRSaWdodCkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgV1RGTW92ZSgqY29sb3JTcGFjZSkp
OworICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0
KCkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCmluZGV4IDRkZWRlMzA4
MWUyNGI0OTA3OGZkYTE1NzQwM2NiNDlmNzAwNDYyMDkuLjdhN2ZkNmMxNzkxYzQzZjY1MWRmMjJl
ZWUxMTA4MzQ3YTFmZTFkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVDb2NvYS5tbQpAQCAtNzEsNyArNzEsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiAgICAgaWYg
KCFzZW5kUmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNl
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRS
aWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBhdXRv
IHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92
ZSgqc2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CiAgICAgaWYgKCFzdXJmYWNlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTEsNyArOTEsNyBAQCBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKAogICAgIGlmICghc2VuZFJpZ2h0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSk7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIG51bGxwdHIpOwogICAgIGlmICghc3Vy
ZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDA0YTQwZGYwMmU0NzQ0OGY1
Yjk4Yzg5ZGY0ODViNzA2ZjBiZTAzN2MuLmYyMzQ4Zjg1MjRlOTYzZjNiODI1ODRiNDVhMjdhODI3
NmI0NTBiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQpAQCAtNjQ2LDcgKzY0Niw3IEBAIGlubGluZSBQREZQbHVnaW46OlBERlBs
dWdpbihXZWJGcmFtZSYgZnJhbWUpCiAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6
bV9zY3JvbGxDb3JuZXJMYXllci5nZXQoKV07CiAgICAgaWYgKFttX3BkZkxheWVyQ29udHJvbGxl
ciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldERldmljZUNvbG9yU3BhY2U6KV0pIHsK
ICAgICAgICAgYXV0byB2aWV3ID0gZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKTsKLSAgICAgICAg
W21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZUNvbG9yU3BhY2U6c2NyZWVuQ29sb3JTcGFj
ZSh2aWV3KS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07CisgICAgICAgIFttX3BkZkxheWVyQ29udHJv
bGxlciBzZXREZXZpY2VDb2xvclNwYWNlOnNjcmVlbkNvbG9yU3BhY2UodmlldyldOwogICAgIH0K
IAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRt
YXBVdGlsaXRpZXMuY3BwCmluZGV4IDc5YTA0NjI5YzljMjI3MWY1OTQ1YTQ1MWEyYWFhMzFhNTQ2
MDgyNGQuLjU3YWVjYmNjZjk1NmVmMjlkOWMyZTEzYmYwZTc1NGNkZTZkZWYxZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRt
YXBVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCkBAIC01Nyw3ICs1NywxMiBAQCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVySW1hZ2UmIHJl
bmRlckltYWdlLCBPcHRpb25hbAogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBF
eHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQuCi0gICAgYXV0
byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXpl
KGJpdG1hcFNpemUpLCB7IHNjcmVlbkNvbG9yU3BhY2UocmVuZGVySW1hZ2UuZnJhbWUoKS5tYWlu
RnJhbWUoKS52aWV3KCkpIH0pOworICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBi
aXRtYXBDb25maWd1cmF0aW9uOworI2lmIFVTRShDRykKKyAgICBiaXRtYXBDb25maWd1cmF0aW9u
LmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5m
cmFtZSgpLm1haW5GcmFtZSgpLnZpZXcoKSk7CisjZW5kaWYKKworICAgIGF1dG8gc2hhcmVkQml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXpl
KSwgYml0bWFwQ29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDRlN2I5ODFlMTIx
MWJmZjI5ZTdkNzMwMmEyMGQ1M2NiN2JmZDczYTUuLjk1MTkxN2MyNGQ5ZjAyZTgwNjY5YmNlZGNi
YzgzYTEwMDQ1YjM2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC05MjcsNyArOTI3LDcg
QEAgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogV2ViQ2hyb21lQ2xpZW50
OjpkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWMKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAot
UmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJp
bmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKIHsKICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0Zv
cihwdXJwb3NlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5k
ZXggNzI5Y2NiMDc1YzY4ZGJlMGJjNzlhNTBmNTlmNmRkY2Y4NTg3OTM2Ny4uNDE5YmE3ODQ4M2Fl
ZWUyYzFkNDNkYTJiMGI0MmU5MWQ3YzFiMWU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjQ0
LDcgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9y
RmFjdG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IGZpbmFsOwogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhl
bEZvcm1hdCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQp
IGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGhv
c3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KaW5kZXggZTlmMmIyMjM3YjFkOGExYjIxYWQyOGUwZmEzMDliODAyNTJiNWVi
ZC4uNjAyM2NlNzhmODQwYmRjZDM5YjY2MzdhODRiYTRmODQzMDhiMWQ5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtNjgsNyArNjgsOSBAQCB1c2luZyBEcmFnSW1hZ2UgPSBD
R0ltYWdlUmVmOwogCiBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydERyYWdJ
bWFnZVRvQml0bWFwKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUm
IGZyYW1lKQogewotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoc2l6ZSwgeyBzY3JlZW5Db2xvclNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSkg
fSk7CisgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRp
b247CisgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNj
cmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKKyAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3Vy
YXRpb24pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggZDlj
ZDIxMjZiZTE1ZjVhNWI2MjI2YjQyYjlkYjdjNzlmMTk1ZDMwMi4uODk0ODhjNjQyNGY5MjkyYzg0
NmRjMjkxNWZhNWE4MGZlMTZlZjcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC01MCw3ICs1MCw2IEBAIGNsYXNzIERlY29kZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNs
YXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3
OwpAQCAtNjEsNiArNjAsNyBAQCBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorc3RydWN0IENvbG9yU3BhY2VEYXRhOwogY2xhc3MgTGF5ZXJUcmVlSG9z
dDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVu
Y2VzU3RvcmU7CkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIHZp
cnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
PikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZURh
dGEmKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBz
Y2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBj
b21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCBmMmY5OTczMDgzNGFiYjZjY2Q5ZjgzNjNhZmY3
MWY4ZjliNTQ3OWNmLi5mMjA3ZTEwN2U5NTI3MGE3ZjkxODljYmE5YWI2Nzc1MzRhYTIyNzkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5tZXNzYWdlcy5pbgpAQCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJl
YSBOb3RSZWZDb3VudGVkIHsKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLgogICAgIFVwZGF0ZUdlb21ldHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1NpemUsIGJv
b2wgZmx1c2hTeW5jaHJvbm91c2x5LCBNYWNoU2VuZFJpZ2h0IGZlbmNlUG9ydCkKICAgICBTZXRE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLSAgICBTZXRDb2xvclNw
YWNlKHN0cnVjdCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9y
U3BhY2UpCisgICAgU2V0Q29sb3JTcGFjZShzdHJ1Y3QgV2ViS2l0OjpDb2xvclNwYWNlRGF0YSBj
b2xvclNwYWNlKQogICAgIFNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIAogICAgIEFkanVzdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzNjYjhiNzg0NTY4MGQxNmRmMWE2NzE4
ZTY2ZjQ3OGU5ZTk4OGI1Ni4uYjE3YTc0YTQzNmFlM2RlNGZiNTJmOGY1NTNjZjgxMTU4MDdkMDkw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTI1OTgsNyArMjU5OCw3IEBAIHN0YXRpYyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24g
c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKFNuYXBzCiAgICAgU2hhcmVhYmxl
Qml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNFKENHKQogICAgIGlm
IChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKLSAgICAgICAg
Y29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFj
ZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCkudmlldygpKTsKICNlbmRpZgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCAxYmI5OGNjZDg0NzZlMzhi
MGU3NmRjMzYzZjY1MWIzYjJhMjYwMjMxLi45MmNhN2I2ZDhkNDkyZjE5NTUwM2RmZjVlOGJhNGIx
ODM4NGIyMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAt
OTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBhaW50aW5nKCk7CiAgICAg
dm9pZCByZXN1bWVQYWludGluZygpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXll
ckhvc3RpbmdNb2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRD
b2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRG
ZW5jZShjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRk
VHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDU2ZTgzZGNlZTljZTA3MmMzYmExOTI1
MTU3Y2Q1MDNiMWY1OWQ0ZWEuLmNiZGFkZDNjYmZhNGY2MDkxMTQzOGVkODM4NGU4NDAwNjgxOGNk
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEu
aCIKICNpbXBvcnQgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIgogI2ltcG9ydCAiRHJhd2lu
Z0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCkBA
IC00NCw3ICs0NSw2IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4K
ICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5oPgotI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgpAQCAtOTEsNyArOTEsNiBA
QCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgYwogICAgIH0pOwogCiAgICAgdXBkYXRlTGF5ZXJIb3N0
aW5nQ29udGV4dCgpOwotICAgIAogICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNw
YWNlKTsKIAogICAgIGlmIChhdXRvIHZpZXdFeHBvc2VkUmVjdCA9IHBhcmFtZXRlcnMudmlld0V4
cG9zZWRSZWN0KQpAQCAtNjUxLDkgKzY1MCw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OnNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkKICAgICBzZW5k
KE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpVcGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlPiBjb2xvclNwYWNlKQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6c2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYgY29sb3JTcGFjZSkKIHsKLSAg
ICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29sb3JTcGFjZSA/IGNvbG9y
U3BhY2UtPnBsYXRmb3JtQ29sb3JTcGFjZSgpIDogbnVsbHB0cik7CisgICAgbV9sYXllckhvc3Rp
bmdDb250ZXh0LT5zZXRDb2xvclNwYWNlKGNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgpKTsK
IH0KIAogUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDQ3Zjg2
MTkyNTA1ODQ4NzAxY2FjNzA5OTc1ZWI5ZWUxN2M4OWRiNGIuLjFjYzI3MmE5ODY1YmFjMzgwZDg5
MjhjODhmOTNlYTg3NzMxZWUzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC00
Myw3ICs0Myw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJv
bGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CkBAIC0yMTQsNyArMjEzLDcgQEAgUmV0YWluUHRyPE5T
SW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2Vydmlj
ZVBpY2tlckl0ZW0KICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIC8vIFRoaXMgaXMgZWZmZWN0
aXZlbHkgYSBzbmFwc2hvdCwgYW5kIHdpbGwgYmUgcGFpbnRlZCBpbiBhbiB1bmFjY2VsZXJhdGVk
IGZhc2hpb24gaW4gbGluZSB3aXRoIEZyYW1lU25hcHNob3R0aW5nLgotICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA0Y2E5OWQwMzY3ZDQ4NTVlOWY1ZjRhZjZhMDFmYTBkNjZiN2E0YmRkLi43YzQzNjFh
M2FjYWQxMzM0MDE4Mjc4ODEzZmIzYjYwNWNkNmY2ZWYwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDUtMjQg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjc3OTQwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTgyCisKKyAgICAgICAgQ2F1c2VkIFNhZmFyaSBjcmFzaCB1
bmRlciBJUEM6OnR5cGVGcm9tQ0ZUeXBlUmVmCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0
OgorCisgICAgICAgICJDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0g
dG8gY2xhc3Mgd3JhcHBpbmcKKyAgICAgICAgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xv
clNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzI3Nzk0MAorCiAyMDIxLTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBDaGVja2VkTG9jayAvIENoZWNrZWRDb25kaXRp
b24gYWxpYXNlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVt
cFN1cHBvcnRJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9y
dElPUy5tbQppbmRleCA0ZDk5MWM3MjE0ODE0YjJlZTY4YzBkNTYzZDg5MWViODdjODhkYWU3Li4x
ZmViNGFkNDQ5ZGNkNzM4MGRmZmU0YzhhMmI3MTJjNzA1NDI2NjEyIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOCw3ICszOCw2IEBACiAjaW1wb3J0IDxDb21tb25DcnlwdG8vQ29tbW9uRGlnZXN0Lmg+CiAj
aW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvVVRDb3JlVHlwZXMuaD4KICNpbXBvcnQgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CkBA
IC03Miw3ICs3MSw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0
RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lCiAjZWxzZQogICAgIFdlYkNv
cmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNuYXBzaG90Rm9ybWF0KTsKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBh
bmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwg
c25hcHNob3RGb3JtYXQpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gc3Vy
ZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKIAogICAgIHZvaWQqIGJpdG1hcEJ1ZmZlciA9IG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9E
aXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDg3YTM2YWNmZTZhMTAwY2MzMjNlMjQ4OTdmY2Uz
ODAzZjIzNGE3NzguLjEyYjk5NjljNjM0ZWI3NDk1MjhmYzE2OGUxNjUzNGVkN2Y2NDhjODAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlz
dFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9E
aXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBVU0UoQ0cpCiAK
LSNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KQEAgLTQ3LDggKzQ2
LDggQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZ1Jlc291cmNlKQog
ewogICAgIEZsb2F0UmVjdCBjb250ZXh0Qm91bmRzIHsgMCwgMCwgY29udGV4dFdpZHRoLCBjb250
ZXh0SGVpZ2h0IH07CiAKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKTsKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCwgOCwgNCAqIGNvbnRl
eHRXaWR0aCwgY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRMYXN0KSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9y
U3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8gY2dDb250
ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdpZHRo
LCBjb250ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdpZHRoLCBjb2xvclNwYWNlLmdldCgpLCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dCB7IGNnQ29udGV4dC5nZXQoKSB9OwogCiAgICAgYXV0byBpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CkBAIC03MCw3ICs2
OSw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3NpbmdSZXNvdXJjZSkK
ICAgICB9CiAKICAgICB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAgICAgICAgIEltYWdlQnVmZmVySGFzaE1hcCBpbWFnZUJ1ZmZlck1hcDsKICAgICAgICAg
aW1hZ2VCdWZmZXJNYXAuc2V0KGltYWdlQnVmZmVySWRlbnRpZmllciwgaW1hZ2VCdWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>