<?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>235353</bug_id>
          
          <creation_ts>2022-01-19 04:09:49 -0800</creation_ts>
          <short_desc>[meta] Perform media networking operation off the main thread</short_desc>
          <delta_ts>2024-01-30 19:33:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=241159</see_also>
          <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>205208</blocked>
    
    <blocked>241061</blocked>
    
    <blocked>243838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1831979</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-19 04:09:49 -0800</bug_when>
    <thetext>When playing multiple CRABS videos we can end up with a deadlock between the main thread and the CoreMedia player.

Currently data coming via PlatformMediaResourceLoader/PlatformMediaResourceClient comes on the main thread. 

When we have a sync call from the content process to the GPU Process to query status of the CoreMedia player this last one could be waiting for data to arrive on the main process. As the data will never come with the main thread blocked ; we end up in a deadlock.

This can be checked with this page:
https://webkit.apple.com/demos/bin/video/many-video-elements.html

Steps to reproduce:
1. Load &lt;https://webkit.apple.com/demos/bin/video/many-video-elements.html&gt; in Safari
2. Tap the “50” button to create 50 media elements
3. Playback will stall with &lt; 50 elements successfully created

By moving the networking operations off the main thread, we could avoid a deadlock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831980</commentid>
    <comment_count>1</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-19 04:10:13 -0800</bug_when>
    <thetext>rdar://84517825</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831984</commentid>
    <comment_count>2</comment_count>
      <attachid>449473</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-19 04:21:28 -0800</bug_when>
    <thetext>Created attachment 449473
WIP1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832404</commentid>
    <comment_count>3</comment_count>
      <attachid>449568</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-20 06:01:04 -0800</bug_when>
    <thetext>Created attachment 449568
WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833289</commentid>
    <comment_count>4</comment_count>
      <attachid>449809</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-24 06:46:12 -0800</bug_when>
    <thetext>Created attachment 449809
WIP3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833295</commentid>
    <comment_count>5</comment_count>
      <attachid>449811</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-24 07:22:35 -0800</bug_when>
    <thetext>Created attachment 449811
WIP3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833631</commentid>
    <comment_count>6</comment_count>
      <attachid>449903</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-25 00:30:40 -0800</bug_when>
    <thetext>Created attachment 449903
WIP4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833685</commentid>
    <comment_count>7</comment_count>
      <attachid>449924</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-25 06:17:33 -0800</bug_when>
    <thetext>Created attachment 449924
WIP4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835417</commentid>
    <comment_count>8</comment_count>
      <attachid>450374</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-30 20:13:53 -0800</bug_when>
    <thetext>Created attachment 450374
WIP6

Fix crashes related to use of AtomString in ResourceResponse</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835445</commentid>
    <comment_count>9</comment_count>
      <attachid>450386</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-31 00:07:20 -0800</bug_when>
    <thetext>Created attachment 450386
WIP6

Fix crashes when GPU-&gt;WebContent connection is closed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869962</commentid>
    <comment_count>10</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-05-18 05:22:56 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/719</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872542</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-28 06:27:31 -0700</bug_when>
    <thetext>Committed r294999 (251097@main): &lt;https://commits.webkit.org/251097@main&gt;

Reviewed commits have been landed. Closing PR #719 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873168</commentid>
    <comment_count>12</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2022-05-31 16:36:30 -0700</bug_when>
    <thetext>This change was reverted in https://commits.webkit.org/251166@main because it introduced https://bugs.webkit.org/show_bug.cgi?id=241159</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2007144</commentid>
    <comment_count>13</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2024-01-24 02:29:07 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/23156</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2009197</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-01-30 19:33:04 -0800</bug_when>
    <thetext>Committed 273804@main (75bfd79c190e): &lt;https://commits.webkit.org/273804@main&gt;

Reviewed commits have been landed. Closing PR #23156 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449473</attachid>
            <date>2022-01-19 04:21:28 -0800</date>
            <delta_ts>2022-01-19 04:21:54 -0800</delta_ts>
            <desc>WIP1</desc>
            <filename>bug-235353-20220119232126.patch</filename>
            <type>text/plain</type>
            <size>8972</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyZDcxNWJjNGVmZThjOWU1ZWIxMTFl
N2MwNmViZjBmODQ4NjlmMjAuLjYwMTE4MWFjMTNjMjIzNzRlNWExZGExMTE0MDRhOGFlZWQxZmU5
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWV0YV0gUGVyZm9ybSBtZWRpYSBuZXR3b3JraW5n
IG9wZXJhdGlvbiBvZmYgdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUzNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWVCYXNlOjph
c3NlcnRJc09uV29ya1F1ZXVlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVl
dWVHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldv
cmtRdWV1ZSBjb25zdCk6CisKIDIwMjItMDEtMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgVG9sbEZyZWVCcmlkZ2luZy5oIHRvIFhjb2Rl
IHByb2plY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMjFhMTc2ZjdhM2M0YjRlYTkzOTdmZWUwNzI4ZDllYzY4OGE3
MjViOC4uZjAzYmFmOGZlNDZiZDA5MWI2NDNhZWQwMGFiZGE1NDc5OGI3N2UwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMS0xOSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIFttZXRhXSBQZXJmb3JtIG1lZGlhIG5ldHdvcmtpbmcgb3BlcmF0
aW9uIG9mZiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTM1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDIyLTAxLTE2ICBDYW1lcm9uIE1j
Q29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5zdXJlIGluIGZsaWdodCBs
YXllciB0cmFuc2FjdGlvbnMgZG9uJ3QgYWNjdW11bGF0ZSBmdXJ0aGVyIGNhbnZhcyBkcmF3aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCmluZGV4IDM2OGMwNjZkOGY5NmI0YmNlNzQzMTgyNTJlM2MwMjY2NjFkOGY2
OTcuLjY1OGRlNjk2ZjAxY2NlNTZiM2UzYjEyODRjMzg2NWEzMjNjNTM0MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1
ZS5oCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3Bh
dGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWUuZ2V0KCk7IH0KICNlbmRp
ZgogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXNzZXJ0SXNPbldvcmtRdWV1ZSgpIGNv
bnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7CiAgICAgICAg
IFNlcmlhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCBmOWY0
N2YxMWM3ODQ1ZDI3NWUxMWNmNzIwZDBhODU2MjU5Y2IyMjFjLi41MWI0YTM0NzQxMTExNDQ2ZjE0
ZDNlM2YyYzQ0NWQzOGJiYmJlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9X
b3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCkBAIC05Miw2ICs5MiwxMyBAQCB2b2lkIFdvcmtRdWV1ZUJhc2U6OnBsYXRmb3JtSW52
YWxpZGF0ZSgpCiB7CiB9CiAKK3ZvaWQgV29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpIGNvbnN0Cit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBkaXNwYXRjaF9hc3NlcnRfcXVl
dWUobV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKKyNlbmRpZgorfQorCiBXb3JrUXVldWU6OldvcmtR
dWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmIHF1ZXVlKQogICAgIDogV29ya1F1
ZXVlQmFzZShXVEZNb3ZlKHF1ZXVlKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dl
bmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtR
dWV1ZUdlbmVyaWMuY3BwCmluZGV4IGQyNTdkM2E3MjA0ZWZiMWNiM2E1ZDg5NTQ2MTBmMmIwMjdh
OGRlNTEuLjFiZWZjMjA4ZWM0NmFjYjBiNWRlZjkwMTBjNjQzNmIyOTRiYzM2MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcApAQCAtODUsNCArODUsOSBA
QCBSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3JrUXVldWUoKQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShSdW5Mb29wOjptYWluKCkpKTsKIH0KIAor
dm9pZCBXb3JrUXVldWVCYXNlOjphc3NlcnRJc09uV29ya1F1ZXVlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoJmN1cnJlbnQoKSA9PSBtX3J1bkxvb3ApOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IDBlZmVlYWVmNWIy
ZDcxYmM2ZDY3MDRkZDFiOTc1YWNiYWUxMTNiYmMuLmQ2MzlmMzZlOGMwZTRiYzc5Y2NjMDk2YTBk
MGQ2NDhlMjlmZDJiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWlu
UHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IG1fZGF0YVVSTE1lZGlhTG9h
ZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyPiBtX3Jl
c291cmNlTWVkaWFMb2FkZXI7Ci0gICAgV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI+IG1fcGxhdGZvcm1NZWRpYUxvYWRlcjsKKyAgICBSZWZQdHI8UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyPiBtX3BsYXRmb3JtTWVkaWFMb2FkZXI7CiAgICAgc2l6ZV90IG1fcmVzcG9uc2VP
ZmZzZXQgeyAwIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggNGI1OTRmZmY4ZDZmNGY3MWM3NmQwNTZlYmExMjhm
ODU4MDdkYjRiNC4uZDllNGNlYWNmYzFiMjViZDM2NDJlOGQyYjVmYjJiODdlMmQ4ZTRlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bQpAQCAtMTM3LDExICsxMzcsMTEgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGEKICAgICAgICAg
bV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCpkYXRhKTsKIH0KIAotY2xhc3Mg
UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcj4geworY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyIGZpbmFsIDogcHVi
bGljIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyPiBjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiwgUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyJiwgUmVzb3VyY2VSZXF1ZXN0JiYpOwotICAgIH5QbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXIoKSB7IHN0b3AoKTsgfQorICAgIHN0YXRpYyBSZWZQdHI8UGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyPiBjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiwgUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyJiwgUmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIH5QbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHN0b3AoKTsKIApA
QCAtMTY2LDE3ICsxNjYsMTUgQEAgcHJpdmF0ZToKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1f
YnVmZmVyOwogfTsKIAotV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
cGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkKK1JlZlB0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
cGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBhdXRvIHJlc291cmNlID0gbG9hZGVyLnJlcXVlc3RSZXNv
dXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRP
cHRpb246OkRpc2FsbG93Q2FjaGluZyk7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgYXV0byogcmVzb3VyY2VQb2ludGVyID0gcmVzb3VyY2UuZ2V0KCk7
CiAgICAgYXV0byBjbGllbnQgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlciB7IHBhcmVudCwgcmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSB9KTsKLSAgICBXZWFrUHRy
IHJlc3VsdCA9IGNsaWVudDsKLQotICAgIHJlc291cmNlUG9pbnRlci0+c2V0Q2xpZW50KFdURk1v
dmUoY2xpZW50KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXNvdXJjZVBvaW50ZXItPnNl
dENsaWVudChjbGllbnQuY29weVJlZigpKTsKKyAgICByZXR1cm4gY2xpZW50OwogfQogCiBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVmPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4m
JiByZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBlYWRkODQ3MzBmMTFiNzczYjAzNTJkYmFhZmU4
ZGRhY2RhODc2MDkzLi4xOGRiOTU2NWI0NGVmMDYzYmUxM2RiYzUyMmQxNTc3MDFhNTQwZTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC0yMDEsMTUgKzIwMSwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJv
bwogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3Zl
KHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRh
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEgb2Ygc2l6ZSAlbHUgZm9yICclcyciLCBkYXRhLnNpemUo
KSwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29y
ayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUg
cmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJ
bnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBtX2lu
dGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5idWZmZXIoKSwg
ZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJv
bGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5n
dGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAgICAgICAg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZl
cikpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEo
V1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IGFjNTQyMmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVk
OTQwMTdjMGNmMTYuLjFhNTQwZjk3NzFmYTAxYzYwZmJkNTlkOTMxM2ZkMWFlY2ZmNGUzOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKElQQzo6
U2hhcmVkQnVmZmVyQ29weSYmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449568</attachid>
            <date>2022-01-20 06:01:04 -0800</date>
            <delta_ts>2022-01-20 06:44:59 -0800</delta_ts>
            <desc>WIP2</desc>
            <filename>bug-235353-20220121010102.patch</filename>
            <type>text/plain</type>
            <size>60470</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyZDcxNWJjNGVmZThjOWU1ZWIxMTFl
N2MwNmViZjBmODQ4NjlmMjAuLjYwMTE4MWFjMTNjMjIzNzRlNWExZGExMTE0MDRhOGFlZWQxZmU5
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWV0YV0gUGVyZm9ybSBtZWRpYSBuZXR3b3JraW5n
IG9wZXJhdGlvbiBvZmYgdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUzNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWVCYXNlOjph
c3NlcnRJc09uV29ya1F1ZXVlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVl
dWVHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldv
cmtRdWV1ZSBjb25zdCk6CisKIDIwMjItMDEtMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgVG9sbEZyZWVCcmlkZ2luZy5oIHRvIFhjb2Rl
IHByb2plY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMjFhMTc2ZjdhM2M0YjRlYTkzOTdmZWUwNzI4ZDllYzY4OGE3
MjViOC4uZjAzYmFmOGZlNDZiZDA5MWI2NDNhZWQwMGFiZGE1NDc5OGI3N2UwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMS0xOSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIFttZXRhXSBQZXJmb3JtIG1lZGlhIG5ldHdvcmtpbmcgb3BlcmF0
aW9uIG9mZiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTM1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDIyLTAxLTE2ICBDYW1lcm9uIE1j
Q29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5zdXJlIGluIGZsaWdodCBs
YXllciB0cmFuc2FjdGlvbnMgZG9uJ3QgYWNjdW11bGF0ZSBmdXJ0aGVyIGNhbnZhcyBkcmF3aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCmluZGV4IDM2OGMwNjZkOGY5NmI0YmNlNzQzMTgyNTJlM2MwMjY2NjFkOGY2
OTcuLjY1OGRlNjk2ZjAxY2NlNTZiM2UzYjEyODRjMzg2NWEzMjNjNTM0MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1
ZS5oCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3Bh
dGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWUuZ2V0KCk7IH0KICNlbmRp
ZgogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXNzZXJ0SXNPbldvcmtRdWV1ZSgpIGNv
bnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7CiAgICAgICAg
IFNlcmlhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCBmOWY0
N2YxMWM3ODQ1ZDI3NWUxMWNmNzIwZDBhODU2MjU5Y2IyMjFjLi41MWI0YTM0NzQxMTExNDQ2ZjE0
ZDNlM2YyYzQ0NWQzOGJiYmJlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9X
b3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCkBAIC05Miw2ICs5MiwxMyBAQCB2b2lkIFdvcmtRdWV1ZUJhc2U6OnBsYXRmb3JtSW52
YWxpZGF0ZSgpCiB7CiB9CiAKK3ZvaWQgV29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpIGNvbnN0Cit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBkaXNwYXRjaF9hc3NlcnRfcXVl
dWUobV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKKyNlbmRpZgorfQorCiBXb3JrUXVldWU6OldvcmtR
dWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmIHF1ZXVlKQogICAgIDogV29ya1F1
ZXVlQmFzZShXVEZNb3ZlKHF1ZXVlKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dl
bmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtR
dWV1ZUdlbmVyaWMuY3BwCmluZGV4IGQyNTdkM2E3MjA0ZWZiMWNiM2E1ZDg5NTQ2MTBmMmIwMjdh
OGRlNTEuLjFiZWZjMjA4ZWM0NmFjYjBiNWRlZjkwMTBjNjQzNmIyOTRiYzM2MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcApAQCAtODUsNCArODUsOSBA
QCBSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3JrUXVldWUoKQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShSdW5Mb29wOjptYWluKCkpKTsKIH0KIAor
dm9pZCBXb3JrUXVldWVCYXNlOjphc3NlcnRJc09uV29ya1F1ZXVlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoJmN1cnJlbnQoKSA9PSBtX3J1bkxvb3ApOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWExN2E3MGZhNThjNzIyOGY2
Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZS4uMjY4YjgxMDkxNDMyZmJkZTU4Mjg4YTgxMGMwMDg3M2Zk
NjEyNWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmNwcApAQCAtMTgzLDIwICsxODMsMjEgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpyZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXMKICAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoIkNy
b3NzLW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVz
b3VyY2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fbG9hZGVyLT5kb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpF
cnJvciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOwogICAgICAgICBtX2RpZFBhc3NBY2Nlc3NDb250
cm9sQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9j
bGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywgUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgY29uc29sZU1lc3NhZ2Uu
Z2V0KCkpKTsKKyAgICAgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAg
ICAgICAgICBjbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywgUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgY29uc29s
ZU1lc3NhZ2UuZ2V0KCkpKTsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gbV9yZXNvdXJjZS0+b3B0aW9u
cygpLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzOwotICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRoaXMsIHJlc3BvbnNlLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoYXV0byBzaG91bGRDb250aW51ZSkgbXV0
YWJsZSB7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpIHsKKyAgICAgICAg
Y2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5k
bGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGF1dG8gc2hvdWxkQ29udGludWUpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29u
dGludWVQb2xpY3lDaGVjazo6Tm8pCiAgICAgICAgICAgICAgICAgc3RvcCgpOwogICAgICAgICB9
KTsKKyAgICB9CiAKICAgICBtX2xvYWRlci0+YWRkUmVzcG9uc2VGb3JUZXN0aW5nKHJlc3BvbnNl
KTsKIH0KQEAgLTIwNiw4ICsyMDcsOCBAQCBib29sIE1lZGlhUmVzb3VyY2U6OnNob3VsZENhY2hl
UmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZQogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJl
ZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGlmIChtX2NsaWVu
dCkKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRDYWNoZVJlc3BvbnNlKCp0aGlzLCBy
ZXNwb25zZSk7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAg
IHJldHVybiBjbGllbnQtPnNob3VsZENhY2hlUmVzcG9uc2UoKnRoaXMsIHJlc3BvbnNlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjE2LDggKzIxNyw4IEBAIHZvaWQgTWVkaWFSZXNvdXJj
ZTo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVx
dWVzdCYmCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0g
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVkaXJlY3RSZWNlaXZlZCgqdGhp
cywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50
LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CkBAIC0yMjcsOCArMjI4LDggQEAgdm9pZCBNZWRp
YVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1MKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhp
cywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIGlmIChhdXRvIGNsaWVudCA9
IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1Nl
bnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCkBAIC0yMzYsOCArMjM3LDggQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGIKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQ
dHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CisgICAgaWYg
KGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGF0YVJlY2Vp
dmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQpAQCAtMjQ1LDExICsyNDYsMTEgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWUKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAg
ICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAobV9j
bGllbnQpIHsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkgewogICAgICAg
ICBpZiAobV9yZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkKLSAgICAgICAgICAgIG1f
Y2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBtX3Jlc291cmNlLT5yZXNvdXJjZUVycm9yKCkpOwor
ICAgICAgICAgICAgY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBtX3Jlc291cmNlLT5yZXNvdXJj
ZUVycm9yKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlz
aGVkKCp0aGlzLCBtZXRyaWNzKTsKKyAgICAgICAgICAgIGNsaWVudC0+bG9hZEZpbmlzaGVkKCp0
aGlzLCBtZXRyaWNzKTsKICAgICB9CiAgICAgc3RvcCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaAppbmRleCBjOTU4Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzLi42
M2Y0M2EyZjVkNmUwOTJkMDgwODg1OTQ1MzdmMWQwZDFlNzI4MDc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaApAQCAtMzEsMTAgKzMxLDEyIEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV29y
a1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsNyArNDUsNyBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIAotY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IDogcHVibGljIFJl
ZkNvdW50ZWQ8UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50PiB7CitjbGFzcyBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1N
ZWRpYVJlc291cmNlQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1NZWRp
YVJlc291cmNlQ2xpZW50KCkgPSBkZWZhdWx0OwogCkBAIC03MSw2ICs3MywxOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3Vy
Y2UoUmVzb3VyY2VSZXF1ZXN0JiYsIExvYWRPcHRpb25zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxT
ZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJikgPSAwOwogCisgICAgLy8gQ2FuIGJlIGNhbGxl
ZCBvbiBhbnkgdGhyZWFkcy4KKyAgICB2aXJ0dWFsIFJlZjxXVEY6OldvcmtRdWV1ZT4gdGFyZ2V0
UXVldWUoKSB7IHJldHVybiBkZWZhdWx0UXVldWUoKTsgfQorCisgICAgc3RhdGljIFJlZjxXVEY6
OldvcmtRdWV1ZT4gZGVmYXVsdFF1ZXVlKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJlZjxX
VEY6OldvcmtRdWV1ZT4+IG1lc3NhZ2VRdWV1ZTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgW10geworICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmNvbnN0cnVjdChXb3JrUXVldWU6
OmNyZWF0ZSgiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyIiwgV1RGOjpXb3JrUXVldWU6OlFP
Uzo6QmFja2dyb3VuZCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2VRdWV1
ZS5nZXQoKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIoKSA9IGRlZmF1bHQ7CiB9OwpAQCAtODMsMTEgKzk4LDIwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBkaWRQYXNzQWNjZXNzQ29u
dHJvbENoZWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgc2V0Q2xpZW50
KFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+JiYgY2xpZW50KSB7IG1fY2xpZW50
ID0gV1RGTW92ZShjbGllbnQpOyB9Ci0gICAgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50KiBj
bGllbnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4gbV9jbGllbnQ7CisgICAgdm9pZCBzZXRD
bGllbnQoUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4mJiBjbGllbnQpCisgICAg
eworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgIG1fY2xpZW50ID0g
V1RGTW92ZShjbGllbnQpOworICAgIH0KKyAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNl
Q2xpZW50PiBjbGllbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OworICAgICAgICByZXR1cm4gbV9jbGllbnQ7CisgICAgfQorCitwcml2YXRlOgorICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IG1fY2xpZW50IFdURl9HVUFSREVE
X0JZX0xPQ0sobV9sb2NrKTsKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDk1YTM3ODlhZDYyNzE5
YzEwMGJjMDY3ZDNjZThhYWE5MzJkNTc0MTEuLjVkNWFiMTlkNmQ5ODEyM2YxZDliMTg3MTY5ODQy
MWVkOTU5Y2ZiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogT0JKQ19D
TEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIEFWQXNzZXRUcmFjazsKQEAg
LTQ2OCw2ICs0NjksNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxOU1Rp
bWVJbnRlcnZhbD4gbV9jYWNoZWRMaXZlVXBkYXRlSW50ZXJ2YWw7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPE9ic2VydmVyPHZvaWQoKT4+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxPYnNlcnZlcjx2b2lkKCk+PiBtX3dhaXRGb3JWaWRlb091dHB1dE1l
ZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcjsKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fdGFy
Z2V0UXVldWUgeyBXVEY6OldvcmtRdWV1ZTo6bWFpbigpIH07CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCBiZGMyYTgyZTczZjRmZGY4OGI1YTU0Yzk5N2YzMmJmNjg5ZGU5OTZh
Li5lYjg5MzI4YTBkZjQ1Y2ZiZjJkNGE5MmQ0NDg2ZmM2YTNmN2ZjYmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTQ0NSwxMCArNDQ1LDE1IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKCkKIHsKICAg
ICB3ZWFrUHRyRmFjdG9yeSgpLnJldm9rZUFsbCgpOwogCi0gICAgW1ttX2F2QXNzZXQgcmVzb3Vy
Y2VMb2FkZXJdIHNldERlbGVnYXRlOm5pbCBxdWV1ZTowXTsKKyAgICBtX3RhcmdldFF1ZXVlLT5k
aXNwYXRjaChbcmVzb3VyY2VMb2FkZXIgPSByZXRhaW5QdHIoW21fYXZBc3NldCByZXNvdXJjZUxv
YWRlcl0pXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgW3Jlc291cmNlTG9hZGVyIHNldERlbGVnYXRl
Om5pbCBxdWV1ZTowXTsKKyAgICB9KTsKIAotICAgIGZvciAoYXV0byYgcGFpciA6IG1fcmVzb3Vy
Y2VMb2FkZXJNYXApCi0gICAgICAgIHBhaXIudmFsdWUtPmludmFsaWRhdGUoKTsKKyAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVyTWFwKSB7CisgICAgICAgIG1fdGFyZ2V0UXVl
dWUtPmRpc3BhdGNoKFtsb2FkZXIgPSBwYWlyLnZhbHVlXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGxvYWRlci0+aW52YWxpZGF0ZSgpOworICAgICAgICB9KTsKKyAgICB9CiAKICAgICBpZiAo
bV92aWRlb091dHB1dCkKICAgICAgICAgbV92aWRlb091dHB1dC0+aW52YWxpZGF0ZSgpOwpAQCAt
OTY5LDcgKzk3NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwgUmV0CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9hdkFzc2V0
LmdldCgpLnJlc291cmNlTG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3Vy
Y2VMb2FkZXIgPSBbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBbcmVzb3VyY2VMb2Fk
ZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXJEZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxMb2FkZXJE
ZWxlZ2F0ZVF1ZXVlKCldOwogCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNB
VkZvdW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkKQEAgLTk3Nyw4ICs5ODIsMTAgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJM
KGNvbnN0IFVSTCYgdXJsLCBSZXQKICAgICAgICAgJiYgW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSldCiAgICAgICAgICYm
IFtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb25E
YXRhRGVsZWdhdGVRdWV1ZSldKSB7CiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXI+IG1lZGlhUmVzb3VyY2VMb2FkZXIgPSBwbGF5ZXIoKS0+Y3JlYXRlUmVzb3VyY2VM
b2FkZXIoKTsKLSAgICAgICAgaWYgKG1lZGlhUmVzb3VyY2VMb2FkZXIpCisgICAgICAgIGlmICht
ZWRpYVJlc291cmNlTG9hZGVyKSB7CisgICAgICAgICAgICBtX3RhcmdldFF1ZXVlID0gbWVkaWFS
ZXNvdXJjZUxvYWRlci0+dGFyZ2V0UXVldWUoKTsKICAgICAgICAgICAgIHJlc291cmNlTG9hZGVy
LlVSTFNlc3Npb24gPSAoTlNVUkxTZXNzaW9uICopYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Np
b24gYWxsb2NdIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6Km1lZGlhUmVzb3VyY2VMb2FkZXIgZGVs
ZWdhdGU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVl
OnJlc291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGVRdWV1ZV0pLmdldCgpOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3IoY2hh
cHRlck1ldGFkYXRhRGlkQ2hhbmdlOikgbmFtZTpBVkFzc2V0Q2hhcHRlck1ldGFkYXRhR3JvdXBz
RGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDptX2F2QXNzZXQuZ2V0KCldOwpAQCAtMjA2Nywy
NSArMjA3NCwzNCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNo
b3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogI2VuZGlmCiAjZW5kaWYKIAot
ICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZSh0aGlzLCBhdlJlcXVlc3QpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QsIG1fdGFyZ2V0UXVldWUpOwog
ICAgIG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0
LCByZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExv
YWRpbmcoKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCiB7Ci0gICAgU3RyaW5nIHNjaGVtZSA9IFtbW2F2
UmVxdWVzdCByZXF1ZXN0XSBVUkxdIHNjaGVtZV07CisgICAgUmVmUHRyIHJlc291cmNlTG9hZGVy
ID0gbV9yZXNvdXJjZUxvYWRlck1hcC5nZXQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3Qp
OwogCi0gICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciA9IG1fcmVz
b3VyY2VMb2FkZXJNYXAuZ2V0KChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKLQotICAg
IGlmIChyZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmVzb3VyY2VMb2FkZXItPnN0b3BMb2FkaW5n
KCk7CisgICAgaWYgKHJlc291cmNlTG9hZGVyKSB7CisgICAgICAgIG1fdGFyZ2V0UXVldWUtPmRp
c3BhdGNoKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLT5zdG9wTG9hZGluZygpOworICAgICAg
ICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICph
dlJlcXVlc3QpCiB7CisgICAgUmVmUHRyIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRl
ck1hcC5nZXQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QpOwogICAgIG1fcmVzb3VyY2VM
b2FkZXJNYXAucmVtb3ZlKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKKworICAgIGlm
IChyZXNvdXJjZUxvYWRlcikgeworICAgICAgICBtX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbcmVz
b3VyY2VMb2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICByZXNvdXJjZUxvYWRlci0+aW52YWxpZGF0ZSgpOworICAgICAgICB9KTsKKyAgICB9
CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNBdmFpbGFi
bGUoKQpAQCAtMjQ2Miw3ICsyNDc4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpyZXNvbHZlZFVSTENoYW5nZWQoKQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdAogewotICAg
IEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VMb2FkZXIgPSBtX2F2QXNzZXQuZ2V0KCku
cmVzb3VyY2VMb2FkZXI7CisgICAgQVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJjZUxvYWRl
ciA9IFttX2F2QXNzZXQgcmVzb3VyY2VMb2FkZXJdOwogICAgIGlmICghRGVwcmVjYXRlZEdsb2Jh
bFNldHRpbmdzOjppc0FWRm91bmRhdGlvbk5TVVJMU2Vzc2lvbkVuYWJsZWQoKQogICAgICAgICB8
fCAhW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lv
bildKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDc2LDcgKzI0OTIsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2so
KSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikg
Y29uc3QKIHsKLSAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9h
dkFzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAq
cmVzb3VyY2VMb2FkZXIgPSBbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBpZiAoIURl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNBVkZvdW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVk
KCkKICAgICAgICAgfHwgIVtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKFVSTFNlc3Npb24pXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwZWZlZWFlZjVi
MmQ3MWJjNmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJjLi5mNWM2OTBjY2NiY2QzYjA3Y2ZjZTViNDdk
YmE4NzVkOGYwMmI1MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtMzUsNiArMzUsMTAgQEAKIAogT0JKQ19DTEFTUyBBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdDsKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBXb3Jr
UXVldWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VN
ZWRpYUxvYWRlcjsKQEAgLTQ1LDEwICs0OSwxMCBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKLWNs
YXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcj4geworY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFy
ZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsKKyAgICBzdGF0aWMgUmVmPFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqLCBXVEY6Oldv
cmtRdWV1ZSYpOwogICAgIHZpcnR1YWwgfldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcigpOwogCiAg
ICAgdm9pZCBzdGFydExvYWRpbmcoKTsKQEAgLTU2LDIzICs2MCwyNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbnZhbGlkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3QgKik7CisgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3QqLCBXVEY6OldvcmtRdWV1ZSYpOwogCiAgICAgZnJpZW5kIGNsYXNzIENh
Y2hlZFJlc291cmNlTWVkaWFMb2FkZXI7CiAgICAgZnJpZW5kIGNsYXNzIERhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyOwogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI7CiAKLSAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworICAgIC8vIFJldHVybiB0cnVlIGlmIHN0b3BMb2FkaW5nKCkgZ290IGNhbGxlZCwgaW5kaWNh
dGluZyB0aGF0IG5vIGZ1cnRoZXIgcHJvY2Vzc2luZyBzaG91bGQgb2NjdXIuCisgICAgYm9vbCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBib29sIG5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisK
ICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9h
ZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyogbV9wYXJlbnQ7CisgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDPiBtX3BhcmVudDsgLy8gT25seSBldmVyIGRlcmVmZXJlbmNlZCBvbiB0aGUg
bWFpbiB0aHJlYWQuCiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
PiBtX2F2UmVxdWVzdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXI+IG1fZGF0YVVSTE1lZGlhTG9hZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRS
ZXNvdXJjZU1lZGlhTG9hZGVyPiBtX3Jlc291cmNlTWVkaWFMb2FkZXI7Ci0gICAgV2Vha1B0cjxQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IG1fcGxhdGZvcm1NZWRpYUxvYWRlcjsKKyAgICBS
ZWZQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBtX3BsYXRmb3JtTWVkaWFMb2FkZXI7
CiAgICAgc2l6ZV90IG1fcmVzcG9uc2VPZmZzZXQgeyAwIH07CisgICAgUmVmPFdURjo6V29ya1F1
ZXVlPiBtX3RhcmdldFF1ZXVlOworICAgIGJvb2wgbV9pbnZhbGlkYXRlZCB7IGZhbHNlIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KaW5kZXggNGI1OTRmZmY4ZDZmNGY3MWM3NmQwNTZlYmExMjhmODU4MDdkYjRiNC4u
ZDYxNGQxYTA5YzYyNmM4OGNiOWQwYmQwZGU4MDBiZmRlODVkN2YzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNDAsNiAr
NDAsNyBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRSZXNvdXJjZUxvYWRlci5oPgog
I2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNp
bXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
QGludGVyZmFjZSBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVz
dCAoV2ViS2l0RXh0ZW5zaW9ucykKQEAgLTEzNywxMSArMTM4LDExIEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgU2hhCiAgICAgICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigq
ZGF0YSk7CiB9CiAKLWNsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlciBmaW5hbCA6IHB1
YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IHsKK2NsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBXZWFrUHRyPFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gY3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciYsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYsIFJlc291cmNlUmVxdWVzdCYmKTsKLSAg
ICB+UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyKCkgeyBzdG9wKCk7IH0KKyAgICBzdGF0aWMg
UmVmUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gY3JlYXRlKFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlciYsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYsIFJlc291cmNlUmVxdWVz
dCYmKTsKKyAgICB+UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyKCkgPSBkZWZhdWx0OwogCiAg
ICAgdm9pZCBzdG9wKCk7CiAKQEAgLTE2Miw2MiArMTYzLDczIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAgICAgV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyJiBtX3BhcmVudDsKKyAgICBjb25zdCBXVEY6OldvcmtRdWV1ZSYgbV90YXJnZXRR
dWV1ZTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwogICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCi1XZWFrUHRyPFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorUmVmUHRyPFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIGF1dG8gcmVzb3Vy
Y2UgPSBsb2FkZXIucmVxdWVzdFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAo
IXJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvKiByZXNvdXJjZVBv
aW50ZXIgPSByZXNvdXJjZS5nZXQoKTsKICAgICBhdXRvIGNsaWVudCA9IGFkb3B0UmVmKCpuZXcg
UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyIHsgcGFyZW50LCByZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpIH0pOwotICAgIFdlYWtQdHIgcmVzdWx0ID0gY2xpZW50OwotCi0gICAgcmVzb3VyY2VQ
b2ludGVyLT5zZXRDbGllbnQoV1RGTW92ZShjbGllbnQpKTsKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJlc291cmNlUG9pbnRlci0+c2V0Q2xpZW50KGNsaWVudC5jb3B5UmVmKCkpOworICAgIHJl
dHVybiBjbGllbnQ7CiB9CiAKIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6UGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZWY8
UGxhdGZvcm1NZWRpYVJlc291cmNlPiYmIHJlc291cmNlKQogICAgIDogbV9wYXJlbnQocGFyZW50
KQorICAgICwgbV90YXJnZXRRdWV1ZShwYXJlbnQubV90YXJnZXRRdWV1ZSkKICAgICAsIG1fcmVz
b3VyY2UoV1RGTW92ZShyZXNvdXJjZSkpCiB7CiB9CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpzdG9wKCkKIHsKKyAgICBtX3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVl
dWUoKTsKKwogICAgIGlmICghbV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byByZXNvdXJjZSA9IFdURk1vdmUobV9yZXNvdXJjZSk7Ci0gICAgcmVzb3VyY2UtPnN0b3AoKTsK
LSAgICByZXNvdXJjZS0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Jlc291cmNlID0gV1RGTW92ZShtX3Jlc291cmNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHJl
c291cmNlLT5zdG9wKCk7CisgICAgICAgIHJlc291cmNlLT5zZXRDbGllbnQobnVsbHB0cik7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpyZXNwb25zZVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fdGFyZ2V0UXVldWUuYXNzZXJ0SXNPbldv
cmtRdWV1ZSgpOworCiAgICAgbV9wYXJlbnQucmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKIH0K
IAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGYWlsZWQoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAgbV90YXJnZXRRdWV1ZS5hc3NlcnRJc09uV29ya1F1
ZXVlKCk7CisKICAgICBtX3BhcmVudC5sb2FkRmFpbGVkKGVycm9yKTsKIH0KIAogdm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiB7CisgICAgbV90YXJnZXRR
dWV1ZS5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQo
KTsKIH0KIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAg
ICBtX3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIG1fYnVmZmVyLmFw
cGVuZChidWZmZXIpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigq
bV9idWZmZXIuZ2V0KCkpOwogfQogCi1jbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4geworY2xh
c3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlciYsIFJlc291cmNlUmVxdWVzdCYmKTsKQEAgLTIzOCw0NiArMjUwLDQ1IEBA
IERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7Ci0gICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgbV9wYXJlbnQubV90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHBhcmVudCA9IFJlZiB7IG1fcGFyZW50IH1dIHsKKyAgICAgICAgaWYgKG1fcGFyZW50Lm1fZGF0
YVVSTE1lZGlhTG9hZGVyLmdldCgpICE9IHRoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgaWYgKCFtX2J1ZmZlciB8fCBtX3Jlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgICAg
ICBtX3BhcmVudC5sb2FkRmFpbGVkKFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6
R2VuZXJhbCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fcGFy
ZW50LnJlc3BvbnNlUmVjZWl2ZWQobV9yZXNwb25zZSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgIGlmIChtX3BhcmVudC5yZXNwb25zZVJlY2VpdmVkKG1fcmVzcG9uc2UpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcigqbV9idWZmZXIpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICBpZiAo
bV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcikpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiAgICAgfSk7
CiB9CiAKLVJlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwg
QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1JlZjxXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3QgKmF2UmVxdWVzdCwgV1RGOjpXb3JrUXVldWUmIHRhcmdldFF1ZXVlKQogewogICAg
IEFTU0VSVChhdlJlcXVlc3QpOwogICAgIEFTU0VSVChwYXJlbnQpOwotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQs
IGF2UmVxdWVzdCwgdGFyZ2V0UXVldWUpKTsKIH0KIAotV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqYXZSZXF1ZXN0KQor
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdCAqYXZSZXF1ZXN0LCBXVEY6OldvcmtRdWV1ZSYgdGFyZ2V0UXVldWUpCiAgICAg
OiBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBtX2F2UmVxdWVzdChhdlJlcXVlc3QpCisgICAgLCBt
X3RhcmdldFF1ZXVlKHRhcmdldFF1ZXVlKQogewogfQogCiBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXI6On5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKQogewotICAgIHN0b3BMb2FkaW5nKCk7CiB9
CiAKIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogeworICAg
IC8vIENhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCwgYmVmb3JlIGFueSBsb2FkZXJzIGFyZSBj
cmVhdGVkLgogICAgIGlmIChtX2RhdGFVUkxNZWRpYUxvYWRlciB8fCBtX3Jlc291cmNlTWVkaWFM
b2FkZXIgfHwgbV9wbGF0Zm9ybU1lZGlhTG9hZGVyIHx8ICFtX3BhcmVudCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0zMTMsOCArMzI0LDExIEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OjpzdGFydExvYWRpbmcoKQogICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nV2l0aEVycm9y
OjBdOwogfQogCisvLyBObyBjb2RlIGFjY2Vzc2luZyBgdGhpc2Agc2hvdWxkIGV2ZXIgYmUgdXNl
ZCBhZnRlciBjYWxsaW5nIHN0b3BMb2FkaW5nKCkuCiB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6c3RvcExvYWRpbmcoKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3Jr
UXVldWUoKTsKKwogICAgIG1fZGF0YVVSTE1lZGlhTG9hZGVyID0gbnVsbHB0cjsKICAgICBtX3Jl
c291cmNlTWVkaWFMb2FkZXIgPSBudWxscHRyOwogCkBAIC0zMjIsMjggKzMzNiwzNCBAQCB2b2lk
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgICAgICBtX3BsYXRm
b3JtTWVkaWFMb2FkZXItPnN0b3AoKTsKICAgICAgICAgbV9wbGF0Zm9ybU1lZGlhTG9hZGVyID0g
bnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKG1fcGFyZW50ICYmIG1fYXZSZXF1ZXN0KQotICAgICAg
ICBtX3BhcmVudC0+ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KG1fYXZSZXF1ZXN0LmdldCgpKTsKKyAg
ICBpZiAobV9hdlJlcXVlc3QpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0g
bV9wYXJlbnQsIGludmFsaWRhdGVkID0gbV9pbnZhbGlkYXRlZCwgYXZSZXF1ZXN0ID0gV1RGTW92
ZShtX2F2UmVxdWVzdCldICgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFpbnZhbGlkYXRl
ZCAmJiBwYXJlbnQpCisgICAgICAgICAgICAgICAgcGFyZW50LT5kaWRTdG9wTG9hZGluZ1JlcXVl
c3QoYXZSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgaWYgKCFtX3BhcmVudCkK
LSAgICAgICAgcmV0dXJuOworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUo
KTsKIAorICAgIGlmIChtX2ludmFsaWRhdGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9pbnZh
bGlkYXRlZCA9IHRydWU7CiAgICAgbV9wYXJlbnQgPSBudWxscHRyOworICAgIHN0b3BMb2FkaW5n
KCk7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnN0b3BMb2FkaW5nKCk7Ci0g
ICAgfSk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorYm9vbCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAg
ICAgaW50IHN0YXR1cyA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CiAgICAgaWYgKHN0YXR1
cyAmJiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+IDI5OSkpIHsKICAgICAgICAgW21fYXZSZXF1
ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6MF07Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgYXV0byYgY29udGVudFJhbmdlID0gcmVzcG9uc2Uu
Y29udGVudFJhbmdlKCk7CkBAIC0zNjgsMTIgKzM4OCwxNiBAQCB2b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZQogICAgICAgICBpZiAoIVttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF0pIHsKICAgICAgICAg
ICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKICAgICAgICAgICAgIHN0b3BMb2FkaW5n
KCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmFpbGVk
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2Vy
dElzT25Xb3JrUXVldWUoKTsKKwogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMzk4NzQxNz4gU2V0
IHRoZSBjb250ZW50VHlwZSBvZiB0aGUgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdCB0byBhbiBl
bXB0eQogICAgIC8vIHN0cmluZyB0byB0cmlnZ2VyIEFWQXNzZXQncyBwbGF5YWJsZSB2YWx1ZSB0
byBjb21wbGV0ZSBsb2FkaW5nLgogICAgIGlmIChbbV9hdlJlcXVlc3QgY29udGVudEluZm9ybWF0
aW9uUmVxdWVzdF0gJiYgIVtbbV9hdlJlcXVlc3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0g
Y29udGVudFR5cGVdKQpAQCAtMzg1LDE1ICs0MDksMTkgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQg
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogeworICAgIG1fdGFyZ2V0
UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIFttX2F2UmVxdWVzdCBmaW5pc2hM
b2FkaW5nXTsKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEpCitib29sIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAgICAgQVZBc3Nl
dFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBk
YXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGZvciBwb3NzaWJsZSB1bnNpZ25lZCBv
dmVyZmxvdy4KICAgICBBU1NFUlQoZGF0YVJlcXVlc3QuY3VycmVudE9mZnNldCA+PSBkYXRhUmVx
dWVzdC5yZXF1ZXN0ZWRPZmZzZXQpOwpAQCAtNDI3LDEyICs0NTUsMTQgQEAgdm9pZCBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmUKIAogICAgIC8vIFRoZXJlIHdhcyBub3QgZW5vdWdoIGRhdGEgaW4gdGhlIGJ1
ZmZlciB0byBzYXRpc2Z5IHRoZSBkYXRhIHJlcXVlc3QuCiAgICAgaWYgKHJlbWFpbmluZ0xlbmd0
aCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZGF0
YVJlcXVlc3QuY3VycmVudE9mZnNldCArIGRhdGFSZXF1ZXN0LnJlcXVlc3RlZExlbmd0aCA+PSBk
YXRhUmVxdWVzdC5yZXF1ZXN0ZWRPZmZzZXQpIHsKICAgICAgICAgW21fYXZSZXF1ZXN0IGZpbmlz
aExvYWRpbmddOwogICAgICAgICBzdG9wTG9hZGluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KaW5kZXggMTk4MTRhMzY1YzlmNjYxYTIxYzIyOWFkYmQwNDYxMWMyMDk0N2U2NC4uNGI5
YjgyNmRmMDM1MDdhYjM0ZDdjYzM1ODU1MTU0OWUzYmFkMjM5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbQpAQCAtNjIsMTkgKzYyLDEyIEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpEYXRhIHsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJj
ZTsKIH07CiAKLVJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3Io
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci19CitSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yKCkgPSBkZWZhdWx0OwogCi1SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yOjp+UmFuZ2VSZXNwb25zZUdlbmVyYXRvcigpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLX0KK1JhbmdlUmVzcG9uc2VHZW5lcmF0b3I6On5SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yKCkgPSBkZWZhdWx0OwogCiBzdGF0aWMgUmVzb3VyY2VSZXNwb25zZSBzeW50aGVzaXpl
ZFJlc3BvbnNlRm9yUmFuZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgb3JpZ2luYWxSZXNwb25z
ZSwgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiBwYXJzZWRSZXF1ZXN0UmFuZ2UsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiB0b3RhbENvbnRlbnRMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBhdXRvIGJlZ2luID0gcGFyc2VkUmVxdWVzdFJhbmdlLmJlZ2luOwogICAg
IGF1dG8gZW5kID0gcGFyc2VkUmVxdWVzdFJhbmdlLmVuZDsKIApAQCAtOTUsNyArODgsNiBAQCBz
dGF0aWMgUmVzb3VyY2VSZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNlRm9yUmFuZ2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgb3JpZwogCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJl
bW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byogZGF0YSA9IG1fbWFwLmdldCh0YXNrLm9yaWdp
bmFsUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOwogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTA0LDggKzk2LDYgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpy
ZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIAogdm9pZCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2Vp
dmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVz
dFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0
aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCiAg
ICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJT
aXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKQEAgLTExNiw3ICsxMDYsNiBAQCB2
b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJh
bmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGdpdmVC
eXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUs
IHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsg
KnRoaXMgfV0gewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAo
W3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGlmICghdGFza0RhdGEpCkBAIC0xNjcsNyArMTU2LDYgQEAgdm9p
ZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5n
ZVJlY2VpdmVkKFdlYkNvcmVOU1UKIAogc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnN0IERhdGEmIGRh
dGEpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNz
ZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5n
OjpZZXMpCiAgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKQEAgLTE4MCw3ICsx
NjgsNiBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoRGF0YSYgZGF0YSkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50
TGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoZGF0YSk7CiAKICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBkYXRhLnRhc2tEYXRhKQpAQCAtMTg5LDcgKzE3Niw2IEBAIHZvaWQgUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdl
cyhEYXRhJiBkYXRhKQogCiBib29sIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OndpbGxIYW5kbGVS
ZXF1ZXN0KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byogZGF0YSA9
IG1fbWFwLmdldChyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzQsMTMgKzIyMCwxMSBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbAogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBmaW5hbAogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
aWYgKCFtX2dlbmVyYXRvcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byogZGF0
YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwpAQCAtMjUyLDcgKzIzNiw2
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCiAgICAgewotICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBhdXRvIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAudGFrZSht
X3VybFN0cmluZyk7CkBAIC0yNjQsNyArMjQ3LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbG9h
ZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsCiAgICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAg
ICBSZWZQdHIgZ2VuZXJhdG9yIHsgbV9nZW5lcmF0b3IuZ2V0KCkgfTsKICAgICAgICAgaWYgKCFn
ZW5lcmF0b3IpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yODIsNyArMjY0LDYgQEAgcHJpdmF0
ZToKIAogYm9vbCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjp3aWxsU3ludGhlc2l6ZVJhbmdlUmVz
cG9uc2VzKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgUGxhdGZvcm1NZWRpYVJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVx
dWVzdCA9IHRhc2sub3JpZ2luYWxSZXF1ZXN0OwogICAgIGlmICghb3JpZ2luYWxSZXF1ZXN0LlVS
TCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCBlYTRh
OWJmMjk3ODI5ZWJkMDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkLi5iYWUzYTkzMTBjYjM0ZDUxMDFi
NzFmNjJjNGMzYTdlYmY4ZDljNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtNTAsMTIg
KzUwLDE0IEBAIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OwogY2xhc3MgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OwogZW51bSBjbGFz
cyBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIDogYm9vbDsKIH0KIAorbmFtZXNwYWNlIFdURiB7
CitjbGFzcyBXb3JrUXVldWU7Cit9CisKIGVudW0gY2xhc3MgV2ViQ29yZU5TVVJMU2Vzc2lvbkNP
UlNBY2Nlc3NDaGVja1Jlc3VsdHMgOiB1aW50OF90IHsKICAgICBVbmtub3duLAogICAgIFBhc3Ms
CkBAIC03NSw3ICs3Nyw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJM
U2Vzc2lvbiA6IE5TT2JqZWN0IHsKICAgICBMb2NrIF9kYXRhVGFza3NMb2NrOwogICAgIEJPT0wg
X2ludmFsaWRhdGVkOwogICAgIE5TVUludGVnZXIgX25leHRUYXNrSWRlbnRpZmllcjsKLSAgICBP
U09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBfaW50ZXJuYWxRdWV1ZTsKKyAgICBSZWZQdHI8
V1RGOjpXb3JrUXVldWU+IF9pbnRlcm5hbFF1ZXVlOwogICAgIFdlYkNvcmVOU1VSTFNlc3Npb25D
T1JTQWNjZXNzQ2hlY2tSZXN1bHRzIF9jb3JzUmVzdWx0czsKICAgICBSZWZQdHI8V2ViQ29yZTo6
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcj4gX3JhbmdlUmVzcG9uc2VHZW5lcmF0b3I7CiB9CkBAIC0x
NDUsNyArMTQ3LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNz
aW9uIDogTlNPYmplY3QgewogQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVzU2VudDsKIEBw
cm9wZXJ0eSBpbnQ2NF90IGNvdW50T2ZCeXRlc0V4cGVjdGVkVG9TZW5kOwogQHByb3BlcnR5IGlu
dDY0X3QgY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmU7Ci1AcHJvcGVydHkgTlNVUkxTZXNz
aW9uVGFza1N0YXRlIHN0YXRlOworQHByb3BlcnR5IChhc3NpZ24sIGF0b21pYykgTlNVUkxTZXNz
aW9uVGFza1N0YXRlIHN0YXRlOwogQHByb3BlcnR5IChudWxsYWJsZSwgcmVhZG9ubHksIGNvcHkp
IE5TRXJyb3IgKmVycm9yOwogQHByb3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKnRh
c2tEZXNjcmlwdGlvbjsKIEBwcm9wZXJ0eSBmbG9hdCBwcmlvcml0eTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQppbmRleCAzYzhiZTA4YzI5MzRlNTRkYTNiNzQ5Y2E2ZGEzNGVkYTk2ZGM5YjhiLi5k
YmMyMTJjMzRhNTM3ZjBkOGU0OGIxYzk3ZGNiOGRhNTliYjI5NmI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTgzLDEwICs4NCw5IEBAIEBpbXBs
ZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyB7CiAK
IC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmJiltZXRyaWNzCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfbWV0cmlj
cyA9IG1ldHJpY3M7CisgICAgX21ldHJpY3MgPSBXVEZNb3ZlKG1ldHJpY3MpOwogICAgIHJldHVy
biBzZWxmOwogfQogCkBAIC0yMjcsOCArMjI3LDYgQEAgQGltcGxlbWVudGF0aW9uIFdlYkNvcmVO
U1VSTFNlc3Npb25UYXNrTWV0cmljcyB7CiAKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRy
aWNzOihXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzCiB7Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIF90cmFuc2FjdGlvbk1ldHJpY3MgPSBhZG9wdE5TKFtbV2Vi
Q29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgYWxsb2NdIF9pbml0V2l0aE1l
dHJpY3M6V1RGTW92ZShtZXRyaWNzKV0pOwpAQCAtMjg2LDcgKzI4NCw3IEBAIC0gKGlkKWluaXRX
aXRoUmVzb3VyY2VMb2FkZXI6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYpbG9hZGVyIGRl
bGVnYXRlOihpZDxOCiAgICAgX2xvYWRlciA9ICZsb2FkZXI7CiAgICAgc2VsZi5kZWxlZ2F0ZSA9
IGluRGVsZWdhdGU7CiAgICAgX3F1ZXVlID0gaW5RdWV1ZSA/IGluUXVldWUgOiBbTlNPcGVyYXRp
b25RdWV1ZSBtYWluUXVldWVdOwotICAgIF9pbnRlcm5hbFF1ZXVlID0gYWRvcHRPU09iamVjdChk
aXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVOU1VSTFNlc3Npb24gX2ludGVybmFsUXVldWUi
LCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKKyAgICBfaW50ZXJuYWxRdWV1ZSA9IFdURjo6V29y
a1F1ZXVlOjpjcmVhdGUoIldlYkNvcmVOU1VSTFNlc3Npb24gX2ludGVybmFsUXVldWUiKTsKICAg
ICBfcmFuZ2VSZXNwb25zZUdlbmVyYXRvciA9IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmNyZWF0
ZSgpOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0zMDAsOCArMjk4LDcgQEAgLSAodm9pZClkZWFs
bG9jCiAgICAgICAgICAgICBbdGFzayBzZXRTZXNzaW9uOm5pbF07CiAgICAgfQogCi0gICAgY2Fs
bE9uTWFpblRocmVhZChbbG9hZGVyID0gV1RGTW92ZShfbG9hZGVyKV0gewotICAgIH0pOworICAg
IF9sb2FkZXItPnRhcmdldFF1ZXVlKCktPmRpc3BhdGNoKFtsb2FkZXIgPSBXVEZNb3ZlKF9sb2Fk
ZXIpXSB7IH0pOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMzI2LDggKzMyMyw3IEBA
IC0gKHZvaWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFz
awogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxXZWJDb3JlTlNV
UkxTZXNzaW9uPiBzdHJvbmdTZWxmIHsgc2VsZiB9OwotICAgIFtzZWxmIGFkZERlbGVnYXRlT3Bl
cmF0aW9uOltzdHJvbmdTZWxmXSB7CisgICAgW3NlbGYgYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0
cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgaWYgKFtzdHJvbmdTZWxmLmdl
dCgpLmRlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkaWRC
ZWNvbWVJbnZhbGlkV2l0aEVycm9yOildKQogICAgICAgICAgICAgW3N0cm9uZ1NlbGYuZ2V0KCku
ZGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKSBkaWRC
ZWNvbWVJbnZhbGlkV2l0aEVycm9yOm5pbF07CiAgICAgfV07CkBAIC0zMzUsOSArMzMxLDggQEAg
LSAodm9pZCl0YXNrQ29tcGxldGVkOihXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKil0YXNr
CiAKIC0gKHZvaWQpYWRkRGVsZWdhdGVPcGVyYXRpb246KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5j
dGlvbgogewotICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uPiBzdHJvbmdTZWxmIHsg
c2VsZiB9OwogICAgIFJldGFpblB0cjxOU0Jsb2NrT3BlcmF0aW9uPiBvcGVyYXRpb24gPSBbTlNC
bG9ja09wZXJhdGlvbiBibG9ja09wZXJhdGlvbldpdGhCbG9jazptYWtlQmxvY2tQdHIoV1RGTW92
ZShmdW5jdGlvbikpLmdldCgpXTsKLSAgICBkaXNwYXRjaF9hc3luYyhfaW50ZXJuYWxRdWV1ZS5n
ZXQoKSwgW3N0cm9uZ1NlbGYsIG9wZXJhdGlvbl0geworICAgIF9pbnRlcm5hbFF1ZXVlLT5kaXNw
YXRjaChbc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgb3BlcmF0aW9uID0gV1RGTW92ZShv
cGVyYXRpb24pXSB7CiAgICAgICAgIFtzdHJvbmdTZWxmLmdldCgpLmRlbGVnYXRlUXVldWUgYWRk
T3BlcmF0aW9uOm9wZXJhdGlvbi5nZXQoKV07CiAgICAgICAgIFtvcGVyYXRpb24gd2FpdFVudGls
RmluaXNoZWRdOwogICAgIH0pOwpAQCAtNTEyLDcgKzUwNyw3IEBAIC0gKE5TVVJMU2Vzc2lvbkRh
dGFUYXNrICopZGF0YVRhc2tXaXRoVVJMOihOU1VSTCAqKXVybAogCiAtICh2b2lkKXNlbmRIMlBp
bmc6KE5TVVJMICopdXJsIHBvbmdIYW5kbGVyOih2b2lkICheKShOU0Vycm9yICplcnJvciwgTlNU
aW1lSW50ZXJ2YWwgaW50ZXJ2YWwpKXBvbmdIYW5kbGVyCiB7Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgdXJsID0gcmV0YWluUHRyKHVy
bCksIHBvbmdIYW5kbGVyID0gbWFrZUJsb2NrUHRyKHBvbmdIYW5kbGVyKV0gKCkgbXV0YWJsZSB7
CisgICAgc2VsZi5sb2FkZXIudGFyZ2V0UXVldWUoKS0+ZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1Nl
bGYgPSByZXRhaW5QdHIoc2VsZiksIHVybCA9IHJldGFpblB0cih1cmwpLCBwb25nSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihwb25nSGFuZGxlcildICgpIG11dGFibGUgewogCiAgICAgICAgIGlmIChf
aW52YWxpZGF0ZWQpCiAgICAgICAgICAgICByZXR1cm4gcG9uZ0hhbmRsZXIoYWRvcHROUyhbW05T
RXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVy
cm9yVW5rbm93biB1c2VySW5mbzpuaWxdKS5nZXQoKSwgMCk7CkBAIC02NjcsMTEgKzY2Miw3IEBA
IHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZWRpcmVjdFJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDpyZXNw
b25zZSByZXF1ZXN0OldURk1vdmUocmVxdWVzdCkgY29tcGxldGlvbkhhbmRsZXI6IFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIHJlcXVlc3Qp
IG11dGFibGUgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXF1ZXN0ID0gcmVxdWVzdC5p
c29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKLSAgICAgICAgfSk7Ci0gICAgfV07CisgICAgW21fdGFzayByZXNvdXJjZTom
cmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDpyZXNwb25zZSByZXF1ZXN0OldURk1vdmUocmVxdWVz
dCkgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildOwogfQogCiB2
b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6YWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQpAQCAtNzM2LDcgKzcyNyw4IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25l
ICopem9uZQogCiAtICh2b2lkKV9yZXN0YXJ0CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICAvLyBpZiAoX3dvcmtRdWV1ZSkKKyAgICAvLyAgICAgX3dvcmtRdWV1ZS0+YXNzZXJ0
SXNPbldvcmtRdWV1ZSgpOwogCiAgICAgW3NlbGYgX2NhbmNlbF07CiAKQEAgLTc1OCw3ICs3NTAs
OSBAQCAtICh2b2lkKV9yZXN0YXJ0CiAKIC0gKHZvaWQpX2NhbmNlbAogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgLy8gaWYgKF93b3JrUXVldWUpCisgICAgLy8gICAgIF93b3Jr
UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIGlmIChfcmVzb3VyY2UpIHsKICAg
ICAgICAgX3Jlc291cmNlLT5zdG9wKCk7CiAgICAgICAgIF9yZXNvdXJjZS0+c2V0Q2xpZW50KG51
bGxwdHIpOwpAQCAtODUzLDggKzg0Nyw4IEBAIC0gKHZvaWQpcmVzdW1lCiAtICh2b2lkKWRlYWxs
b2MKIHsKICAgICBpZiAoIWlzTWFpblRocmVhZCgpICYmIF9yZXNvdXJjZSkgewotICAgICAgICBp
ZiAoYXV0byogY2xpZW50ID0gX3Jlc291cmNlLT5jbGllbnQoKSkKLSAgICAgICAgICAgIHN0YXRp
Y19jYXN0PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudCo+KGNsaWVudCktPmNsZWFy
VGFzaygpOworICAgICAgICBpZiAoYXV0byBjbGllbnQgPSBfcmVzb3VyY2UtPmNsaWVudCgpKQor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50
Kj4oY2xpZW50LmdldCgpKS0+Y2xlYXJUYXNrKCk7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Jlc291cmNlID0gV1RGTW92ZShfcmVzb3VyY2UpXSB7IH0pOwogICAgIH0KIApAQCAtODczLDYg
Kzg2Nyw4IEBAIC0gKE5TRGljdGlvbmFyeSAqKV90aW1pbmdEYXRhCiAKIC0gKHZvaWQpcmVzb3Vy
Y2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBs
b25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25n
KXRvdGFsQnl0ZXNUb0JlU2VudAogeworICAgIC8vIF93b3JrUXVldWUtPmFzc2VydElzT25Xb3Jr
UXVldWUoKTsKKwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNv
dXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFVOVVNFRF9QQVJBTShieXRlc1NlbnQpOwogICAgIFVO
VVNFRF9QQVJBTSh0b3RhbEJ5dGVzVG9CZVNlbnQpOwpAQCAtODgzLDcgKzg3OSw3IEBAIC0gKHZv
aWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNw
b25zZTooY29uc3QgUmVzb3VyCiB7CiAgICAgQVNTRVJUKHJlc3BvbnNlLnNvdXJjZSgpID09IFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBS
ZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZSB8fCByZXNwb25zZS5zb3VyY2UoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZUFmdGVyVmFsaWRhdGlvbiB8fCBy
ZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3Jr
ZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9
PSBfcmVzb3VyY2UpOwotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBbc2VsZi5z
ZXNzaW9uIHRhc2s6c2VsZiBkaWRSZWNlaXZlUmVzcG9uc2VGcm9tT3JpZ2luOlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUocmVzcG9uc2UudXJsKCkpXTsKICAgICBbc2VsZi5zZXNzaW9uIHRhc2s6c2Vs
ZiBkaWRSZWNlaXZlQ09SU0FjY2Vzc0NoZWNrUmVzdWx0OnJlc291cmNlID8gcmVzb3VyY2UtPmRp
ZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKSA6IFlFU107CiAgICAgc2VsZi5jb3VudE9mQnl0ZXNF
eHBlY3RlZFRvUmVjZWl2ZSA9IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAt
ODkzLDIzICs4ODksMjMgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBSZXNvdXIKICAgICAgICAgX3Jlc291
cmNlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiAgICAgfQotICAgIAorCiAgICAgUmV0YWluUHRyPFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKICAgICBpZiAo
IXNlbGYuc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKLSAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3Bl
cmF0aW9uOltzdHJvbmdTZWxmLCBzdHJvbmdSZXNwb25zZSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgW3NlbGYuc2Vzc2lv
biBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiwgc3Ryb25nUmVzcG9uc2UsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRhcmdldFF1ZXVlID0g
c2VsZi5zZXNzaW9uLmxvYWRlci50YXJnZXRRdWV1ZSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
c3Ryb25nU2VsZi0+X3Jlc3BvbnNlID0gc3Ryb25nUmVzcG9uc2UuZ2V0KCk7CiAKICAgICAgICAg
aWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNz
aW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAg
ICAgIGlmICghW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNl
c3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZVJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOildKSB7
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIHRhcmdldFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2VsZiwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
W2RhdGFEZWxlZ2F0ZSBVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdTZWxmLmdldCgp
LnNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopc3Ryb25nU2VsZi5nZXQo
KSBkaWRSZWNlaXZlUmVzcG9uc2U6c3Ryb25nUmVzcG9uc2UuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6bWFrZUJsb2NrUHRyKFtzdHJvbmdTZWxmLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbiBkaXNw
b3NpdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdT
ZWxmLCBkaXNwb3NpdGlvbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vzc2lvbjoo
TlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNl
c3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkUmVjZWl2ZVJlc3BvbnNlOnN0cm9u
Z1Jlc3BvbnNlLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbc3Ryb25nU2Vs
ZiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFyZ2V0
UXVldWVdIChOU1VSTFNlc3Npb25SZXNwb25zZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHRhcmdldFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2VsZiwgZGlz
cG9zaXRpb24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChkaXNwb3NpdGlvbiA9PSBOU1VSTFNl
c3Npb25SZXNwb25zZUNhbmNlbCkKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6Tm8pOwogICAgICAgICAgICAgICAgIGVsc2Ug
ewpAQCAtOTIzLDE4ICs5MTksMTggQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBSZXNvdXIKIAogLSAoQk9P
TClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJl
c3BvbnNlOihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZQogeworICAgIC8vIF93b3Jr
UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKIAotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0KICAgICAvLyBGSVhNRTogcmVtb3ZlIGlmIDxyZGFyOi8vcHJvYmxlbS8y
MDAwMTk4NT4gaXMgZXZlciByZXNvbHZlZC4KICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0KIAogLSAo
dm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERh
dGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogeworICAgIC8vIF93b3JrUXVldWUtPmFzc2Vy
dElzT25Xb3JrUXVldWUoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2Ug
fHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKLSAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRl
T3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92
ZShkYXRhKV0geworICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9u
Z1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CiAgICAgICAg
IHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gW2RhdGEgbGVuZ3RoXTsK
ICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8
TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdh
dGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKQEAgLTk0NCwxMSArOTQw
LDEyIEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWREYXRhOihSZXRhaW5QdHI8TlNEYXRhCiAKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooUmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBj
b21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICAvLyBfd29ya1F1ZXVlLT5hc3NlcnRJc09u
V29ya1F1ZXVlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJl
c291cmNlID09IF9yZXNvdXJjZSk7Ci0gICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJh
dGlvbjpbc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgcmVzcG9uc2UgPSByZXRhaW5QdHIo
cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpKSwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgeworICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1Nl
bGYgPSByZXRhaW5QdHIoc2VsZiksIHJlc3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlLm5zVVJM
UmVzcG9uc2UoKSksIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0YXJnZXRRdWV1ZSA9IHNlbGYu
c2Vzc2lvbi5sb2FkZXIudGFyZ2V0UXVldWUoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
W3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pIHsKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICAgICAgdGFyZ2V0
UXVldWUtPmRpc3BhdGNoKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTk1NiwxNCArOTUzLDE0IEBAIC0gKHZvaWQp
cmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVj
dDooY29uc3QgUmVzb3VyCiAKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBk
YXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdl
dCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjp0YXNrOndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6KV0pIHsKLSAgICAgICAgICAgIGF1
dG8gY29tcGxldGlvbkhhbmRsZXJCbG9jayA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3JlcXVlc3Qg
PSBSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlckJsb2NrID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0YXJnZXRRdWV1ZV0oTlNVUkxSZXF1ZXN0ICpu
ZXdSZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICB0YXJnZXRRdWV1ZS0+ZGlzcGF0
Y2goW3JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgW2RhdGFEZWxlZ2F0
ZSBVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24gdGFz
azooTlNVUkxTZXNzaW9uVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpy
ZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQ
Qm9keSkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJCbG9jay5nZXQoKV07CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICB0YXJnZXRRdWV1ZS0+ZGlzcGF0Y2go
W3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
CkBAIC05NzIsNiArOTY5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBSZXNvdXIKIAogLSAodm9pZClf
cmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3IgbWV0cmljczooY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiltZXRyaWNzCiB7CisgICAgLy8gX3dvcmtRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVz
b3VyY2UpOwogICAgIGlmIChzZWxmLnN0YXRlID09IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZUNvbXBs
ZXRlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtOTgxLDcgKzk3OSw3IEBAIC0gKHZvaWQpX3Jlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJv
cjooTlNFcnJvCiAgICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb24+IHN0cm9uZ1Nlc3Np
b24geyBzZWxmLnNlc3Npb24gfTsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gc3Ryb25nRXJyb3Ig
eyBlcnJvciB9OwogICAgIGF1dG8gdGFza01ldHJpY3MgPSBhZG9wdE5TKFtbV2ViQ29yZU5TVVJM
U2Vzc2lvblRhc2tNZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNzOk5ldHdvcmtMb2FkTWV0
cmljcyhtZXRyaWNzKV0pOwotICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246
W3N0cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb24sIHN0cm9uZ0Vycm9yLCB0YXNrTWV0cmljcyA9IFdU
Rk1vdmUodGFza01ldHJpY3MpXSAoKSBtdXRhYmxlIHsKKyAgICBbc2VsZi5zZXNzaW9uIGFkZERl
bGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmLCBzdHJvbmdTZXNzaW9uLCBzdHJvbmdFcnJvciwg
dGFza01ldHJpY3MgPSBXVEZNb3ZlKHRhc2tNZXRyaWNzKSwgdGFyZ2V0UXVldWUgPSBzZWxmLnNl
c3Npb24ubG9hZGVyLnRhcmdldFF1ZXVlKCldICgpIG11dGFibGUgewogICAgICAgICBpZDxOU1VS
TFNlc3Npb25UYXNrRGVsZWdhdGU+IGRlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxl
Z2F0ZT4pc3Ryb25nU2Vzc2lvbi5nZXQoKS5kZWxlZ2F0ZTsKIAogICAgICAgICBpZiAoW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjp0YXNrOmRpZEZpbmlz
aENvbGxlY3RpbmdNZXRyaWNzOildKQpAQCAtOTkwLDcgKzk4OCw3IEBAIC0gKHZvaWQpX3Jlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJv
cjooTlNFcnJvCiAgICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6KV0pCiAgICAgICAgICAg
ICBbZGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2Vzc2lvbi5nZXQo
KSB0YXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkQ29tcGxl
dGVXaXRoRXJyb3I6c3Ryb25nRXJyb3IuZ2V0KCldOwogCi0gICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb25dIHsKKyAgICAgICAgdGFyZ2V0UXVldWUtPmRp
c3BhdGNoKFtzdHJvbmdTZWxmLCBzdHJvbmdTZXNzaW9uXSB7CiAgICAgICAgICAgICBbc3Ryb25n
U2Vzc2lvbiB0YXNrQ29tcGxldGVkOnN0cm9uZ1NlbGYuZ2V0KCldOwogICAgICAgICB9KTsKICAg
ICB9XTsKQEAgLTk5OCwxNiArOTk2LDE5IEBAIC0gKHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjooTlNFcnJvCiAKIC0g
KHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9yJillcnJvcgogewor
ICAgIC8vIF93b3JrUXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBbc2VsZiBfcmVz
b3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKSBtZXRy
aWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwogfQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFJl
c291cmNlRXJyb3ImKWVycm9yCiB7CisgICAgLy8gX3dvcmtRdWV1ZS0+YXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOwogICAgIFtzZWxmIF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJy
b3I6ZXJyb3IubnNFcnJvcigpIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CiB9CiAK
IC0gKHZvaWQpcmVzb3VyY2VGaW5pc2hlZDooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSBtZXRyaWNzOihjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MKIHsKKyAgICAvLyBf
d29ya1F1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgW3NlbGYgX3Jlc291cmNlOnJl
c291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjpuaWwgbWV0cmljczptZXRyaWNzXTsKIH0KIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCA3MmE0MjJkNGFlZmQ2NjUxZmY5ZGNmNzg0MzdjMDY0MmIyZTUx
N2RiLi4yOWMxMTFlMmIzYzA4NmM0OWI2MjBiNjEyNTQ0M2E4MGY0ZmZmMTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC00NTEsOCArNDUxLDEwIEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyJiBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCiAKIFJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcigpCiB7Ci0gICAgaWYgKCFtX3JlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyKQorICAgIGlmICghbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcikgewogICAgICAg
ICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcj4oKTsKKyAgICAgICAgbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci0+
aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbigpKTsKKyAgICB9CiAKICAgICByZXR1cm4g
Km1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5kZXggN2Y1MTJj
NmMxMWE4ZTcxMDhjZjAwNjJiNTg0ZDI3YjU4OTA4ZDE4Zi4uNzMzOGEzZWQxM2ViMTNmOWZhYzc5
YjA2Y2RkYjJlM2RmNzIzOWM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNiBAQCBSZW1v
dGVNZWRpYVJlc291cmNlOjpSZW1vdGVNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyJiByZW1vdGVNZWRpYQogCiBSZW1vdGVNZWRpYVJlc291cmNlOjp+UmVtb3RlTWVkaWFS
ZXNvdXJjZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAgICAgc3RvcCgpOwog
ICAgIGlmICghbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwpA
QCAtNzIsMTIgKzcxLDEyIEBAIGJvb2wgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGlkUGFzc0FjY2Vz
c0NvbnRyb2xDaGVjaygpIGNvbnN0CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6cmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBkaWRQYXNz
QWNjZXNzQ29udHJvbENoZWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVl
UG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV9jbGllbnQp
CisgICAgYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZGlkUGFz
c0FjY2Vzc0NvbnRyb2xDaGVjazsKLSAgICBtX2NsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCgqdGhp
cywgcmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBzaG91bGRDb250aW51ZSkg
bXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAgIGNsaWVudC0+
cmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChzaG91bGRDb250aW51
ZSA9PSBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpObykKICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPnN0b3AoKTsKIApAQCAtODcsMzkgKzg2LDM5IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNv
dXJjZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Ym9vCiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVkaXJlY3RSZWNl
aXZlZCgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAg
ICAgY2xpZW50LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNw
b25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlh
UmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRl
c1RvQmVTZW50KQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFT
ZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgaWYgKGF1dG8g
Y2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGF0YVNlbnQoKnRoaXMs
IGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSk7
CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+
ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
CiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKCp0aGlzLCBl
cnJvcik7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNs
aWVudC0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKCp0aGlzLCBlcnJvcik7CiB9CiAKIHZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVkKCp0
aGlzLCBlcnJvcik7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAg
ICAgIGNsaWVudC0+bG9hZEZhaWxlZCgqdGhpcywgZXJyb3IpOwogfQogCiB2b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2U6OmxvYWRGaW5pc2hlZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlzaGVk
KCp0aGlzLCBtZXRyaWNzKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkK
KyAgICAgICAgY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IDAxYWViNDI3
OThlOWFjYjEzYTk1ZDUxZWJjYzYxM2NjYTY5MmNkNWEuLmM2NGI2MjM2MTZlMDI4YTc4ZGU2Njc5
YWE0ODlmMDk2NDExNDFkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjgsOSAr
MjgsOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCkBAIC0zOCwxMiArMzgsMTIgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKQotewotfQor
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkg
PSBkZWZhdWx0OworUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6On5SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlcigpID0gZGVmYXVsdDsKIAotUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6On5S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7
CisgICAgY29ubmVjdGlvbi5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdFF1ZXVlKCksIHRoaXMpOwogfQogCiB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjphZGRNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVNZWRp
YVJlc291cmNlJiByZW1vdGVNZWRpYVJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAppbmRl
eCAxM2I3NmU4MGE0OThjOTQ1ZTFjNDZlOTFmZDg0Nzk4MmI1ZWQ3NDExLi41Y2I0NTI2YWUyYWVk
MTQ1NjcwYzg5MjJmMThkYjI4YzAxZjNkOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgpA
QCAtNTAsMTYgKzUxLDE4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlTWVkaWFS
ZXNvdXJjZTsKIAogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIKLSAgICA6IHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCk7CiAgICAgflJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyKCk7CiAKKyAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uKElQ
Qzo6Q29ubmVjdGlvbiYpOworCiAgICAgdm9pZCBhZGRNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlh
UmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVJlc291cmNlJik7CiAgICAgdm9pZCByZW1v
dmVNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBl
YWRkODQ3MzBmMTFiNzczYjAzNTJkYmFhZmU4ZGRhY2RhODc2MDkzLi4xOGRiOTU2NWI0NGVmMDYz
YmUxM2RiYzUyMmQxNTc3MDFhNTQwZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMDEsMTUgKzIwMSwx
NSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBMT0coTmV0d29y
aywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEgb2Ygc2l6
ZSAlbHUgZm9yICclcyciLCBkYXRhLnNpemUoKSwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNz
aW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRh
IHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VM
WShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCkpKSkgewotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3Jl
TG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgYnVmZmVyID0gZGF0YS5idWZmZXIoKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7
CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkYXRhID0gV1RG
TW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAobV9jb3JlTG9hZGVyKQotICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6U2hh
cmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
ICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5n
dGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IGFj
NTQyMmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVkOTQwMTdjMGNmMTYuLjFhNTQwZjk3NzFmYTAxYzYw
ZmJkNTlkOTMxM2ZkMWFlY2ZmNGUzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtODEsNyArODEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291
cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWls
U2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwo=
</data>
<flag name="commit-queue"
          id="475692"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449809</attachid>
            <date>2022-01-24 06:46:12 -0800</date>
            <delta_ts>2022-01-24 08:07:25 -0800</delta_ts>
            <desc>WIP3</desc>
            <filename>bug-235353-20220125014609.patch</filename>
            <type>text/plain</type>
            <size>87788</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyZDcxNWJjNGVmZThjOWU1ZWIxMTFl
N2MwNmViZjBmODQ4NjlmMjAuLjYwMTE4MWFjMTNjMjIzNzRlNWExZGExMTE0MDRhOGFlZWQxZmU5
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWV0YV0gUGVyZm9ybSBtZWRpYSBuZXR3b3JraW5n
IG9wZXJhdGlvbiBvZmYgdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUzNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWVCYXNlOjph
c3NlcnRJc09uV29ya1F1ZXVlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVl
dWVHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldv
cmtRdWV1ZSBjb25zdCk6CisKIDIwMjItMDEtMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgVG9sbEZyZWVCcmlkZ2luZy5oIHRvIFhjb2Rl
IHByb2plY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMjFhMTc2ZjdhM2M0YjRlYTkzOTdmZWUwNzI4ZDllYzY4OGE3
MjViOC4uZjAzYmFmOGZlNDZiZDA5MWI2NDNhZWQwMGFiZGE1NDc5OGI3N2UwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMS0xOSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIFttZXRhXSBQZXJmb3JtIG1lZGlhIG5ldHdvcmtpbmcgb3BlcmF0
aW9uIG9mZiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTM1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDIyLTAxLTE2ICBDYW1lcm9uIE1j
Q29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5zdXJlIGluIGZsaWdodCBs
YXllciB0cmFuc2FjdGlvbnMgZG9uJ3QgYWNjdW11bGF0ZSBmdXJ0aGVyIGNhbnZhcyBkcmF3aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCmluZGV4IDM2OGMwNjZkOGY5NmI0YmNlNzQzMTgyNTJlM2MwMjY2NjFkOGY2
OTcuLjY1OGRlNjk2ZjAxY2NlNTZiM2UzYjEyODRjMzg2NWEzMjNjNTM0MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1
ZS5oCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3Bh
dGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWUuZ2V0KCk7IH0KICNlbmRp
ZgogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXNzZXJ0SXNPbldvcmtRdWV1ZSgpIGNv
bnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7CiAgICAgICAg
IFNlcmlhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCBmOWY0
N2YxMWM3ODQ1ZDI3NWUxMWNmNzIwZDBhODU2MjU5Y2IyMjFjLi41MWI0YTM0NzQxMTExNDQ2ZjE0
ZDNlM2YyYzQ0NWQzOGJiYmJlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9X
b3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCkBAIC05Miw2ICs5MiwxMyBAQCB2b2lkIFdvcmtRdWV1ZUJhc2U6OnBsYXRmb3JtSW52
YWxpZGF0ZSgpCiB7CiB9CiAKK3ZvaWQgV29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpIGNvbnN0Cit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBkaXNwYXRjaF9hc3NlcnRfcXVl
dWUobV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKKyNlbmRpZgorfQorCiBXb3JrUXVldWU6OldvcmtR
dWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmIHF1ZXVlKQogICAgIDogV29ya1F1
ZXVlQmFzZShXVEZNb3ZlKHF1ZXVlKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dl
bmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtR
dWV1ZUdlbmVyaWMuY3BwCmluZGV4IGQyNTdkM2E3MjA0ZWZiMWNiM2E1ZDg5NTQ2MTBmMmIwMjdh
OGRlNTEuLjFiZWZjMjA4ZWM0NmFjYjBiNWRlZjkwMTBjNjQzNmIyOTRiYzM2MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcApAQCAtODUsNCArODUsOSBA
QCBSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3JrUXVldWUoKQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShSdW5Mb29wOjptYWluKCkpKTsKIH0KIAor
dm9pZCBXb3JrUXVldWVCYXNlOjphc3NlcnRJc09uV29ya1F1ZXVlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoJmN1cnJlbnQoKSA9PSBtX3J1bkxvb3ApOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWExN2E3MGZhNThjNzIyOGY2
Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZS4uMjY4YjgxMDkxNDMyZmJkZTU4Mjg4YTgxMGMwMDg3M2Zk
NjEyNWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmNwcApAQCAtMTgzLDIwICsxODMsMjEgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpyZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXMKICAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoIkNy
b3NzLW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVz
b3VyY2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fbG9hZGVyLT5kb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpF
cnJvciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOwogICAgICAgICBtX2RpZFBhc3NBY2Nlc3NDb250
cm9sQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9j
bGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywgUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgY29uc29sZU1lc3NhZ2Uu
Z2V0KCkpKTsKKyAgICAgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAg
ICAgICAgICBjbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywgUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgY29uc29s
ZU1lc3NhZ2UuZ2V0KCkpKTsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gbV9yZXNvdXJjZS0+b3B0aW9u
cygpLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzOwotICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRoaXMsIHJlc3BvbnNlLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoYXV0byBzaG91bGRDb250aW51ZSkgbXV0
YWJsZSB7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpIHsKKyAgICAgICAg
Y2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5k
bGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGF1dG8gc2hvdWxkQ29udGludWUpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29u
dGludWVQb2xpY3lDaGVjazo6Tm8pCiAgICAgICAgICAgICAgICAgc3RvcCgpOwogICAgICAgICB9
KTsKKyAgICB9CiAKICAgICBtX2xvYWRlci0+YWRkUmVzcG9uc2VGb3JUZXN0aW5nKHJlc3BvbnNl
KTsKIH0KQEAgLTIwNiw4ICsyMDcsOCBAQCBib29sIE1lZGlhUmVzb3VyY2U6OnNob3VsZENhY2hl
UmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZQogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJl
ZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGlmIChtX2NsaWVu
dCkKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRDYWNoZVJlc3BvbnNlKCp0aGlzLCBy
ZXNwb25zZSk7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAg
IHJldHVybiBjbGllbnQtPnNob3VsZENhY2hlUmVzcG9uc2UoKnRoaXMsIHJlc3BvbnNlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjE2LDggKzIxNyw4IEBAIHZvaWQgTWVkaWFSZXNvdXJj
ZTo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVx
dWVzdCYmCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0g
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVkaXJlY3RSZWNlaXZlZCgqdGhp
cywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50
LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CkBAIC0yMjcsOCArMjI4LDggQEAgdm9pZCBNZWRp
YVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1MKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhp
cywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIGlmIChhdXRvIGNsaWVudCA9
IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1Nl
bnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCkBAIC0yMzYsOCArMjM3LDggQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGIKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQ
dHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CisgICAgaWYg
KGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGF0YVJlY2Vp
dmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQpAQCAtMjQ1LDExICsyNDYsMTEgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWUKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAg
ICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAobV9j
bGllbnQpIHsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkgewogICAgICAg
ICBpZiAobV9yZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkKLSAgICAgICAgICAgIG1f
Y2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBtX3Jlc291cmNlLT5yZXNvdXJjZUVycm9yKCkpOwor
ICAgICAgICAgICAgY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBtX3Jlc291cmNlLT5yZXNvdXJj
ZUVycm9yKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlz
aGVkKCp0aGlzLCBtZXRyaWNzKTsKKyAgICAgICAgICAgIGNsaWVudC0+bG9hZEZpbmlzaGVkKCp0
aGlzLCBtZXRyaWNzKTsKICAgICB9CiAgICAgc3RvcCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaAppbmRleCBjOTU4Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzLi43
MTlmNzhiYjliZWIxOTgyMTZmYjNkMmM0ZjRkNDY5NDI0YTlmMDQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaApAQCAtMzEsMTAgKzMxLDEyIEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV29y
a1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsMTAgKzQ1LDExIEBAIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogCi1jbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgOiBwdWJsaWMg
UmVmQ291bnRlZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IHsKK2NsYXNzIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUNsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKKyAgICAvLyBUaG9zZSBtZXRob2RzIG11
c3QgYmUgY2FsbGVkIG9uIFBsYXRmb3JtTWVkaWFSZXNvdXJjZTo6dGFyZ2V0UXVldWUoKQogICAg
IHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRp
bnVlUG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNw
b25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtNjgsOSArNzEsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBS
ZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1
ZXN0JiYsIExvYWRPcHRpb25zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbmRIMlBpbmcoY29u
c3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJj
ZUVycm9yPiYmKT4mJikgPSAwOwogCisgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFk
cy4gUmV0dXJuIHRoZSBXb3JrUXVldWUgb24gd2hpY2ggdGhlIFBsYWZ0b3JtTWVkaWFSZXNvdXJj
ZSBhbmQgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IG11c3QgYmUgYmUgY2FsbGVkIG9uLgor
ICAgIHZpcnR1YWwgUmVmPFdURjo6V29ya1F1ZXVlPiB0YXJnZXRRdWV1ZSgpIHsgcmV0dXJuIFdU
Rjo6V29ya1F1ZXVlOjptYWluKCk7IH0KKyAgICAvLyByZXF1ZXN0UmVzb3VyY2Ugd2lsbCBiZSBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLCB0aGUgUGxhdGZvcm1NZWRpYVJlc291cmNlIG9iamVj
dCBpcyB0byBiZSB1c2VkIG9uIHRhcmdldFF1ZXVlKCkuCisgICAgdmlydHVhbCBSZWZQdHI8UGxh
dGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYsIExv
YWRPcHRpb25zKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIoKSA9IGRlZmF1bHQ7CiB9OwpAQCAtODMsMTEgKzkwLDIwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBkaWRQYXNzQWNjZXNzQ29u
dHJvbENoZWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgc2V0Q2xpZW50
KFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+JiYgY2xpZW50KSB7IG1fY2xpZW50
ID0gV1RGTW92ZShjbGllbnQpOyB9Ci0gICAgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50KiBj
bGllbnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4gbV9jbGllbnQ7CisgICAgdm9pZCBzZXRD
bGllbnQoUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4mJiBjbGllbnQpCisgICAg
eworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgIG1fY2xpZW50ID0g
V1RGTW92ZShjbGllbnQpOworICAgIH0KKyAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNl
Q2xpZW50PiBjbGllbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OworICAgICAgICByZXR1cm4gbV9jbGllbnQ7CisgICAgfQorCitwcml2YXRlOgorICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IG1fY2xpZW50IFdURl9HVUFSREVE
X0JZX0xPQ0sobV9sb2NrKTsKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDk1YTM3ODlhZDYyNzE5
YzEwMGJjMDY3ZDNjZThhYWE5MzJkNTc0MTEuLjVkNWFiMTlkNmQ5ODEyM2YxZDliMTg3MTY5ODQy
MWVkOTU5Y2ZiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogT0JKQ19D
TEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIEFWQXNzZXRUcmFjazsKQEAg
LTQ2OCw2ICs0NjksNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxOU1Rp
bWVJbnRlcnZhbD4gbV9jYWNoZWRMaXZlVXBkYXRlSW50ZXJ2YWw7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPE9ic2VydmVyPHZvaWQoKT4+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxPYnNlcnZlcjx2b2lkKCk+PiBtX3dhaXRGb3JWaWRlb091dHB1dE1l
ZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcjsKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fdGFy
Z2V0UXVldWUgeyBXVEY6OldvcmtRdWV1ZTo6bWFpbigpIH07CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCBiZGMyYTgyZTczZjRmZGY4OGI1YTU0Yzk5N2YzMmJmNjg5ZGU5OTZh
Li5hNmNjYzY4MmYzNGZmY2FjYjI0ODliNmZhZWQ5MjZkODcyZmZkZjAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbAog
ICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmJhc2VVUkwgZXJyb3I6bmlsXTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIE5TQXJyYXkgKnByb3BlcnR5S2V5
cyA9IEBbTlNVUkxOYW1lS2V5LCBOU1VSTENvbnRlbnRNb2RpZmljYXRpb25EYXRlS2V5LCBOU1VS
TElzUmVndWxhckZpbGVLZXldOwogICAgIE5TRGlyZWN0b3J5RW51bWVyYXRvciAqZW51bWVyYXRv
ciA9IFtmaWxlTWFuYWdlciBlbnVtZXJhdG9yQXRVUkw6YmFzZVVSTCBpbmNsdWRpbmdQcm9wZXJ0
aWVzRm9yS2V5czoKICAgICAgICAgcHJvcGVydHlLZXlzIG9wdGlvbnM6TlNEaXJlY3RvcnlFbnVt
ZXJhdGlvblNraXBzU3ViZGlyZWN0b3J5RGVzY2VuZGFudHMKQEAgLTQ0Nyw4ICs0NDcsMTEgQEAg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMoKQogCiAgICAgW1ttX2F2QXNzZXQgcmVzb3VyY2VMb2FkZXJdIHNldERl
bGVnYXRlOm5pbCBxdWV1ZTowXTsKIAotICAgIGZvciAoYXV0byYgcGFpciA6IG1fcmVzb3VyY2VM
b2FkZXJNYXApCi0gICAgICAgIHBhaXIudmFsdWUtPmludmFsaWRhdGUoKTsKKyAgICBmb3IgKGF1
dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVyTWFwKSB7CisgICAgICAgIG1fdGFyZ2V0UXVldWUt
PmRpc3BhdGNoKFtsb2FkZXIgPSBwYWlyLnZhbHVlXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGxvYWRlci0+aW52YWxpZGF0ZSgpOworICAgICAgICB9KTsKKyAgICB9CiAKICAgICBpZiAobV92
aWRlb091dHB1dCkKICAgICAgICAgbV92aWRlb091dHB1dC0+aW52YWxpZGF0ZSgpOwpAQCAtOTY5
LDcgKzk3Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3Jl
YXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwgUmV0CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9hdkFzc2V0Lmdl
dCgpLnJlc291cmNlTG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VM
b2FkZXIgPSBbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBbcmVzb3VyY2VMb2FkZXIg
c2V0RGVsZWdhdGU6bV9sb2FkZXJEZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxMb2FkZXJEZWxl
Z2F0ZVF1ZXVlKCldOwogCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNBVkZv
dW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkKQEAgLTk3Nyw4ICs5ODAsMTAgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNv
bnN0IFVSTCYgdXJsLCBSZXQKICAgICAgICAgJiYgW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSldCiAgICAgICAgICYmIFty
ZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb25EYXRh
RGVsZWdhdGVRdWV1ZSldKSB7CiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXI+IG1lZGlhUmVzb3VyY2VMb2FkZXIgPSBwbGF5ZXIoKS0+Y3JlYXRlUmVzb3VyY2VMb2Fk
ZXIoKTsKLSAgICAgICAgaWYgKG1lZGlhUmVzb3VyY2VMb2FkZXIpCisgICAgICAgIGlmIChtZWRp
YVJlc291cmNlTG9hZGVyKSB7CisgICAgICAgICAgICBtX3RhcmdldFF1ZXVlID0gbWVkaWFSZXNv
dXJjZUxvYWRlci0+dGFyZ2V0UXVldWUoKTsKICAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLlVS
TFNlc3Npb24gPSAoTlNVUkxTZXNzaW9uICopYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb24g
YWxsb2NdIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6Km1lZGlhUmVzb3VyY2VMb2FkZXIgZGVsZWdh
dGU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOnJl
c291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGVRdWV1ZV0pLmdldCgpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBh
ZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3IoY2hhcHRl
ck1ldGFkYXRhRGlkQ2hhbmdlOikgbmFtZTpBVkFzc2V0Q2hhcHRlck1ldGFkYXRhR3JvdXBzRGlk
Q2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDptX2F2QXNzZXQuZ2V0KCldOwpAQCAtMjA2NywyNSAr
MjA3MiwzNCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogI2VuZGlmCiAjZW5kaWYKIAotICAg
IGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0
aGlzLCBhdlJlcXVlc3QpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QsIG1fdGFyZ2V0UXVldWUpOwogICAg
IG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCBy
ZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExvYWRp
bmcoKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCiB7Ci0gICAgU3RyaW5nIHNjaGVtZSA9IFtbW2F2UmVx
dWVzdCByZXF1ZXN0XSBVUkxdIHNjaGVtZV07CisgICAgUmVmUHRyIHJlc291cmNlTG9hZGVyID0g
bV9yZXNvdXJjZUxvYWRlck1hcC5nZXQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QpOwog
Ci0gICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3Vy
Y2VMb2FkZXJNYXAuZ2V0KChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKLQotICAgIGlm
IChyZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmVzb3VyY2VMb2FkZXItPnN0b3BMb2FkaW5nKCk7
CisgICAgaWYgKHJlc291cmNlTG9hZGVyKSB7CisgICAgICAgIG1fdGFyZ2V0UXVldWUtPmRpc3Bh
dGNoKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLT5zdG9wTG9hZGluZygpOworICAgICAgICB9
KTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJl
cXVlc3QpCiB7CisgICAgUmVmUHRyIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlck1h
cC5nZXQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QpOwogICAgIG1fcmVzb3VyY2VMb2Fk
ZXJNYXAucmVtb3ZlKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKKworICAgIGlmIChy
ZXNvdXJjZUxvYWRlcikgeworICAgICAgICBtX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbcmVzb3Vy
Y2VMb2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICByZXNvdXJjZUxvYWRlci0+aW52YWxpZGF0ZSgpOworICAgICAgICB9KTsKKyAgICB9CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNBdmFpbGFibGUo
KQpAQCAtMjQ2Miw3ICsyNDc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpyZXNvbHZlZFVSTENoYW5nZWQoKQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdAogewotICAgIEFW
QXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VMb2FkZXIgPSBtX2F2QXNzZXQuZ2V0KCkucmVz
b3VyY2VMb2FkZXI7CisgICAgQVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJjZUxvYWRlciA9
IFttX2F2QXNzZXQgcmVzb3VyY2VMb2FkZXJdOwogICAgIGlmICghRGVwcmVjYXRlZEdsb2JhbFNl
dHRpbmdzOjppc0FWRm91bmRhdGlvbk5TVVJMU2Vzc2lvbkVuYWJsZWQoKQogICAgICAgICB8fCAh
W3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbild
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDc2LDcgKzI0OTAsNyBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBj
b25zdAogCiBzdGQ6Om9wdGlvbmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29u
c3QKIHsKLSAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9hdkFz
c2V0LmdldCgpLnJlc291cmNlTG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVz
b3VyY2VMb2FkZXIgPSBbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBpZiAoIURlcHJl
Y2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNBVkZvdW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkK
ICAgICAgICAgfHwgIVtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KFVSTFNlc3Npb24pXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwZWZlZWFlZjViMmQ3
MWJjNmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJjLi5mNWM2OTBjY2NiY2QzYjA3Y2ZjZTViNDdkYmE4
NzVkOGYwMmI1MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaApAQCAtMzUsNiArMzUsMTAgQEAKIAogT0JKQ19DTEFTUyBBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdDsKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBXb3JrUXVl
dWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VNZWRp
YUxvYWRlcjsKQEAgLTQ1LDEwICs0OSwxMCBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKLWNsYXNz
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcj4geworY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50
LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqLCBXVEY6OldvcmtR
dWV1ZSYpOwogICAgIHZpcnR1YWwgfldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcigpOwogCiAgICAg
dm9pZCBzdGFydExvYWRpbmcoKTsKQEAgLTU2LDIzICs2MCwyNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbnZhbGlkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3QgKik7CisgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3QqLCBXVEY6OldvcmtRdWV1ZSYpOwogCiAgICAgZnJpZW5kIGNsYXNzIENhY2hl
ZFJlc291cmNlTWVkaWFMb2FkZXI7CiAgICAgZnJpZW5kIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1l
ZGlhTG9hZGVyOwogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI7
CiAKLSAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIC8vIFJldHVybiB0cnVlIGlmIHN0b3BMb2FkaW5nKCkgZ290IGNhbGxlZCwgaW5kaWNhdGlu
ZyB0aGF0IG5vIGZ1cnRoZXIgcHJvY2Vzc2luZyBzaG91bGQgb2NjdXIuCisgICAgYm9vbCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBib29sIG5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisKICAg
ICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZp
bmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyogbV9wYXJlbnQ7CisgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDPiBtX3BhcmVudDsgLy8gT25seSBldmVyIGRlcmVmZXJlbmNlZCBvbiB0aGUgbWFp
biB0aHJlYWQuCiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBt
X2F2UmVxdWVzdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXI+IG1fZGF0YVVSTE1lZGlhTG9hZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRSZXNv
dXJjZU1lZGlhTG9hZGVyPiBtX3Jlc291cmNlTWVkaWFMb2FkZXI7Ci0gICAgV2Vha1B0cjxQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IG1fcGxhdGZvcm1NZWRpYUxvYWRlcjsKKyAgICBSZWZQ
dHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBtX3BsYXRmb3JtTWVkaWFMb2FkZXI7CiAg
ICAgc2l6ZV90IG1fcmVzcG9uc2VPZmZzZXQgeyAwIH07CisgICAgUmVmPFdURjo6V29ya1F1ZXVl
PiBtX3RhcmdldFF1ZXVlOworICAgIGJvb2wgbV9pbnZhbGlkYXRlZCB7IGZhbHNlIH07CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KaW5kZXggNGI1OTRmZmY4ZDZmNGY3MWM3NmQwNTZlYmExMjhmODU4MDdkYjRiNC4uZDYx
NGQxYTA5YzYyNmM4OGNiOWQwYmQwZGU4MDBiZmRlODVkN2YzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNDAsNiArNDAs
NyBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRSZXNvdXJjZUxvYWRlci5oPgogI2lt
cG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBv
cnQgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogQGlu
dGVyZmFjZSBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCAo
V2ViS2l0RXh0ZW5zaW9ucykKQEAgLTEzNywxMSArMTM4LDExIEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgU2hhCiAgICAgICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqZGF0
YSk7CiB9CiAKLWNsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlciBmaW5hbCA6IHB1Ymxp
YyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IHsKK2NsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBXZWFrUHRyPFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gY3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYs
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYsIFJlc291cmNlUmVxdWVzdCYmKTsKLSAgICB+
UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyKCkgeyBzdG9wKCk7IH0KKyAgICBzdGF0aWMgUmVm
UHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gY3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlciYsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYsIFJlc291cmNlUmVxdWVzdCYm
KTsKKyAgICB+UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyKCkgPSBkZWZhdWx0OwogCiAgICAg
dm9pZCBzdG9wKCk7CiAKQEAgLTE2Miw2MiArMTYzLDczIEBAIHByaXZhdGU6CiAgICAgdm9pZCBs
b2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAgICAgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJiBtX3BhcmVudDsKKyAgICBjb25zdCBXVEY6OldvcmtRdWV1ZSYgbV90YXJnZXRRdWV1
ZTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwogICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCi1XZWFrUHRyPFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorUmVmUHRyPFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIGF1dG8gcmVzb3VyY2Ug
PSBsb2FkZXIucmVxdWVzdFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAoIXJl
c291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvKiByZXNvdXJjZVBvaW50
ZXIgPSByZXNvdXJjZS5nZXQoKTsKICAgICBhdXRvIGNsaWVudCA9IGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyIHsgcGFyZW50LCByZXNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpIH0pOwotICAgIFdlYWtQdHIgcmVzdWx0ID0gY2xpZW50OwotCi0gICAgcmVzb3VyY2VQb2lu
dGVyLT5zZXRDbGllbnQoV1RGTW92ZShjbGllbnQpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJlc291cmNlUG9pbnRlci0+c2V0Q2xpZW50KGNsaWVudC5jb3B5UmVmKCkpOworICAgIHJldHVy
biBjbGllbnQ7CiB9CiAKIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6UGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZWY8UGxh
dGZvcm1NZWRpYVJlc291cmNlPiYmIHJlc291cmNlKQogICAgIDogbV9wYXJlbnQocGFyZW50KQor
ICAgICwgbV90YXJnZXRRdWV1ZShwYXJlbnQubV90YXJnZXRRdWV1ZSkKICAgICAsIG1fcmVzb3Vy
Y2UoV1RGTW92ZShyZXNvdXJjZSkpCiB7CiB9CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpzdG9wKCkKIHsKKyAgICBtX3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVldWUo
KTsKKwogICAgIGlmICghbV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBy
ZXNvdXJjZSA9IFdURk1vdmUobV9yZXNvdXJjZSk7Ci0gICAgcmVzb3VyY2UtPnN0b3AoKTsKLSAg
ICByZXNvdXJjZS0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jl
c291cmNlID0gV1RGTW92ZShtX3Jlc291cmNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHJlc291
cmNlLT5zdG9wKCk7CisgICAgICAgIHJlc291cmNlLT5zZXRDbGllbnQobnVsbHB0cik7CisgICAg
fSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpyZXNwb25zZVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fdGFyZ2V0UXVldWUuYXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOworCiAgICAgbV9wYXJlbnQucmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKIH0KIAog
dm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CisgICAgbV90YXJnZXRRdWV1ZS5hc3NlcnRJc09uV29ya1F1ZXVl
KCk7CisKICAgICBtX3BhcmVudC5sb2FkRmFpbGVkKGVycm9yKTsKIH0KIAogdm9pZCBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiB7CisgICAgbV90YXJnZXRRdWV1
ZS5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsK
IH0KIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBt
X3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIG1fYnVmZmVyLmFwcGVu
ZChidWZmZXIpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9i
dWZmZXIuZ2V0KCkpOwogfQogCi1jbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4geworY2xhc3Mg
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlciYsIFJlc291cmNlUmVxdWVzdCYmKTsKQEAgLTIzOCw0NiArMjUwLDQ1IEBAIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImCiAgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgbV9wYXJlbnQubV90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBh
cmVudCA9IFJlZiB7IG1fcGFyZW50IH1dIHsKKyAgICAgICAgaWYgKG1fcGFyZW50Lm1fZGF0YVVS
TE1lZGlhTG9hZGVyLmdldCgpICE9IHRoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKCFtX2J1ZmZlciB8fCBtX3Jlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBt
X3BhcmVudC5sb2FkRmFpbGVkKFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2Vu
ZXJhbCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fcGFyZW50
LnJlc3BvbnNlUmVjZWl2ZWQobV9yZXNwb25zZSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgIGlmIChtX3BhcmVudC5yZXNwb25zZVJlY2VpdmVkKG1fcmVzcG9uc2UpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcigqbV9idWZmZXIpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICBpZiAobV9w
YXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcikpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiAgICAgfSk7CiB9
CiAKLVJlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZB
c3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1JlZjxXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3QgKmF2UmVxdWVzdCwgV1RGOjpXb3JrUXVldWUmIHRhcmdldFF1ZXVlKQogewogICAgIEFT
U0VSVChhdlJlcXVlc3QpOwogICAgIEFTU0VSVChwYXJlbnQpOwotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2
UmVxdWVzdCwgdGFyZ2V0UXVldWUpKTsKIH0KIAotV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqYXZSZXF1ZXN0KQorV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdCAqYXZSZXF1ZXN0LCBXVEY6OldvcmtRdWV1ZSYgdGFyZ2V0UXVldWUpCiAgICAgOiBt
X3BhcmVudChwYXJlbnQpCiAgICAgLCBtX2F2UmVxdWVzdChhdlJlcXVlc3QpCisgICAgLCBtX3Rh
cmdldFF1ZXVlKHRhcmdldFF1ZXVlKQogewogfQogCiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
On5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKQogewotICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAK
IHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogeworICAgIC8v
IENhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCwgYmVmb3JlIGFueSBsb2FkZXJzIGFyZSBjcmVh
dGVkLgogICAgIGlmIChtX2RhdGFVUkxNZWRpYUxvYWRlciB8fCBtX3Jlc291cmNlTWVkaWFMb2Fk
ZXIgfHwgbV9wbGF0Zm9ybU1lZGlhTG9hZGVyIHx8ICFtX3BhcmVudCkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zMTMsOCArMzI0LDExIEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpz
dGFydExvYWRpbmcoKQogICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nV2l0aEVycm9yOjBd
OwogfQogCisvLyBObyBjb2RlIGFjY2Vzc2luZyBgdGhpc2Agc2hvdWxkIGV2ZXIgYmUgdXNlZCBh
ZnRlciBjYWxsaW5nIHN0b3BMb2FkaW5nKCkuCiB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjo6c3RvcExvYWRpbmcoKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVl
dWUoKTsKKwogICAgIG1fZGF0YVVSTE1lZGlhTG9hZGVyID0gbnVsbHB0cjsKICAgICBtX3Jlc291
cmNlTWVkaWFMb2FkZXIgPSBudWxscHRyOwogCkBAIC0zMjIsMjggKzMzNiwzNCBAQCB2b2lkIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgICAgICBtX3BsYXRmb3Jt
TWVkaWFMb2FkZXItPnN0b3AoKTsKICAgICAgICAgbV9wbGF0Zm9ybU1lZGlhTG9hZGVyID0gbnVs
bHB0cjsKICAgICB9Ci0gICAgaWYgKG1fcGFyZW50ICYmIG1fYXZSZXF1ZXN0KQotICAgICAgICBt
X3BhcmVudC0+ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KG1fYXZSZXF1ZXN0LmdldCgpKTsKKyAgICBp
ZiAobV9hdlJlcXVlc3QpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0gbV9w
YXJlbnQsIGludmFsaWRhdGVkID0gbV9pbnZhbGlkYXRlZCwgYXZSZXF1ZXN0ID0gV1RGTW92ZSht
X2F2UmVxdWVzdCldICgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFpbnZhbGlkYXRlZCAm
JiBwYXJlbnQpCisgICAgICAgICAgICAgICAgcGFyZW50LT5kaWRTdG9wTG9hZGluZ1JlcXVlc3Qo
YXZSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgaWYgKCFtX3BhcmVudCkKLSAg
ICAgICAgcmV0dXJuOworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsK
IAorICAgIGlmIChtX2ludmFsaWRhdGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9pbnZhbGlk
YXRlZCA9IHRydWU7CiAgICAgbV9wYXJlbnQgPSBudWxscHRyOworICAgIHN0b3BMb2FkaW5nKCk7
CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnN0b3BMb2FkaW5nKCk7Ci0gICAg
fSk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorYm9vbCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAgICAg
aW50IHN0YXR1cyA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CiAgICAgaWYgKHN0YXR1cyAm
JiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+IDI5OSkpIHsKICAgICAgICAgW21fYXZSZXF1ZXN0
IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6MF07Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCiAgICAgYXV0byYgY29udGVudFJhbmdlID0gcmVzcG9uc2UuY29u
dGVudFJhbmdlKCk7CkBAIC0zNjgsMTIgKzM4OCwxNiBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZQogICAgICAgICBpZiAoIVttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF0pIHsKICAgICAgICAgICAg
IFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKICAgICAgICAgICAgIHN0b3BMb2FkaW5nKCk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmFpbGVkKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElz
T25Xb3JrUXVldWUoKTsKKwogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMzk4NzQxNz4gU2V0IHRo
ZSBjb250ZW50VHlwZSBvZiB0aGUgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdCB0byBhbiBlbXB0
eQogICAgIC8vIHN0cmluZyB0byB0cmlnZ2VyIEFWQXNzZXQncyBwbGF5YWJsZSB2YWx1ZSB0byBj
b21wbGV0ZSBsb2FkaW5nLgogICAgIGlmIChbbV9hdlJlcXVlc3QgY29udGVudEluZm9ybWF0aW9u
UmVxdWVzdF0gJiYgIVtbbV9hdlJlcXVlc3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0gY29u
dGVudFR5cGVdKQpAQCAtMzg1LDE1ICs0MDksMTkgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXI6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogeworICAgIG1fdGFyZ2V0UXVl
dWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2Fk
aW5nXTsKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEpCitib29sIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Cisg
ICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAgICAgQVZBc3NldFJl
c291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRh
UmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGZvciBwb3NzaWJsZSB1bnNpZ25lZCBvdmVy
Zmxvdy4KICAgICBBU1NFUlQoZGF0YVJlcXVlc3QuY3VycmVudE9mZnNldCA+PSBkYXRhUmVxdWVz
dC5yZXF1ZXN0ZWRPZmZzZXQpOwpAQCAtNDI3LDEyICs0NTUsMTQgQEAgdm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmUKIAogICAgIC8vIFRoZXJlIHdhcyBub3QgZW5vdWdoIGRhdGEgaW4gdGhlIGJ1ZmZl
ciB0byBzYXRpc2Z5IHRoZSBkYXRhIHJlcXVlc3QuCiAgICAgaWYgKHJlbWFpbmluZ0xlbmd0aCkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZGF0YVJl
cXVlc3QuY3VycmVudE9mZnNldCArIGRhdGFSZXF1ZXN0LnJlcXVlc3RlZExlbmd0aCA+PSBkYXRh
UmVxdWVzdC5yZXF1ZXN0ZWRPZmZzZXQpIHsKICAgICAgICAgW21fYXZSZXF1ZXN0IGZpbmlzaExv
YWRpbmddOwogICAgICAgICBzdG9wTG9hZGluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGI3YjA3ZmYxNDU0ZDU2MWEzMDIxMDhhZTMyMjkxZThm
ODM0MzdiZDkuLmYzODUxN2JkMzEzMWU4MTc1MzQwMTQ0MmFjNDE4MTFiMmI5YWUzMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0xMTgxLDcgKzEx
ODEsOCBAQCBib29sIHdlYktpdFNyY1dvdWxkVGFpbnRPcmlnaW4oV2ViS2l0V2ViU3JjKiBzcmMs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgRGF0YU11dGV4TG9ja2VyIG1l
bWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogCi0gICAgYXV0byogY2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQgPSByZWludGVycHJldF9jYXN0PENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50Kj4obWVtYmVycy0+cmVzb3VyY2UtPmNsaWVudCgpKTsKKyAgICBhdXRvIGNsaWVu
dCA9IG1lbWJlcnMtPnJlc291cmNlLT5jbGllbnQoKTsKKyAgICBhdXRvKiBjYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudCA9IHN0YXRpY19jYXN0PENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50Kj4oY2xpZW50LmdldCgpKTsKICAgICBmb3IgKGF1dG8mIHJlc3BvbnNlT3JpZ2luIDogY2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQtPnNlY3VyaXR5T3JpZ2lucygpKSB7CiAgICAgICAg
IGlmICghb3JpZ2luLmlzU2FtZU9yaWdpbkRvbWFpbigqcmVzcG9uc2VPcmlnaW4pKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oCmluZGV4IDAwYzIw
MDAyNTE1OTkxYWMwZGQ0ZWQzMDkxM2IyMmRkYzY4YWNlNmYuLjg0ZjEzZjIxZjJhMWIxYzE2YjNm
MjFiYWNhMTIwNTEwNzM1MmQzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkxIYXNo
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTMyLDYgKzMzLDkgQEAKIE9CSkNfQ0xB
U1MgTlNVUkxSZXF1ZXN0OwogT0JKQ19DTEFTUyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s7
CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgV29ya1F1ZXVlOworfQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgUGFyc2VkUmVxdWVzdFJhbmdlOwpAQCAtNDAsNyArNDQsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogCiBjbGFzcyBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJhbmdlUmVzcG9uc2VHZW5lcmF0b3IsIFdURjo6RGVz
dHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yKTsgfQorICAgIHN0YXRpYyBSZWY8UmFuZ2VSZXNwb25zZUdlbmVyYXRvcj4gY3JlYXRlKFdU
Rjo6V29ya1F1ZXVlJiB0YXJnZXRRdWV1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yKHRhcmdldFF1ZXVlKSk7IH0KICAgICB+UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcigpOwogCiAgICAgYm9vbCB3aWxsU3ludGhlc2l6ZVJhbmdlUmVzcG9uc2VzKFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayAqLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CkBAIC00OCw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92
ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopOwogCiBwcml2YXRlOgotICAgIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3IoKTsKKyAgICBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yKFdURjo6
V29ya1F1ZXVlJik7CiAKICAgICBzdHJ1Y3QgRGF0YTsKICAgICBjbGFzcyBNZWRpYVJlc291cmNl
Q2xpZW50OwpAQCAtNTcsNiArNjEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29uc3QgRGF0YSYpOwog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxEYXRhPj4gbV9tYXA7CisgICAg
UmVmPFdURjo6V29ya1F1ZXVlPiBtX3RhcmdldFF1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDE5ODE0YTM2NWM5ZjY2
MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQuLjg3ZmIxYzMyOGUxYjJiNzMxYjg4MjkxODk3NGEx
NjJkOGJmNTkxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTYyLDE5ICs2
MiwxNSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgUmVmUHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CiB9OwogCi1SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yKCkKK1JhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoV1RGOjpXb3JrUXVldWUmIHRhcmdldFF1ZXVlKQorICAg
IDogbV90YXJnZXRRdWV1ZSh0YXJnZXRRdWV1ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogfQogCi1SYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjp+UmFuZ2VSZXNwb25zZUdlbmVyYXRv
cigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLX0KK1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6On5SYW5nZVJlc3BvbnNlR2VuZXJhdG9yKCkgPSBkZWZhdWx0OwogCiBzdGF0aWMgUmVz
b3VyY2VSZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNlRm9yUmFuZ2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgb3JpZ2luYWxSZXNwb25zZSwgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiBwYXJz
ZWRSZXF1ZXN0UmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB0b3RhbENvbnRlbnRMZW5ndGgp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIGJlZ2luID0gcGFyc2Vk
UmVxdWVzdFJhbmdlLmJlZ2luOwogICAgIGF1dG8gZW5kID0gcGFyc2VkUmVxdWVzdFJhbmdlLmVu
ZDsKIApAQCAtOTUsNyArOTEsNyBAQCBzdGF0aWMgUmVzb3VyY2VSZXNwb25zZSBzeW50aGVzaXpl
ZFJlc3BvbnNlRm9yUmFuZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgb3JpZwogCiB2b2lkIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrICp0YXNrKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV90YXJnZXRR
dWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIGF1dG8qIGRhdGEgPSBtX21hcC5nZXQo
dGFzay5vcmlnaW5hbFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKQEAgLTEwNCw4ICsxMDAsNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQog
CiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQ
YXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRD
b250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0KKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAg
YXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXpl
IDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKQEAgLTExNSw4ICsxMTAsOCBAQCB2b2lk
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdl
UmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1
ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVy
YXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwg
YnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2Vu
ZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRhcmdldFF1ZXVlID0gbV90YXJnZXRRdWV1ZV0g
eworICAgICAgICB0YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgICAgICBp
ZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGlmICghdGFza0RhdGEpCkBAIC0xMzYsMTcgKzEzMSwxNSBA
QCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICB9CiAgICAgICAgIGlmIChieXRlSW5k
ZXggPj0gcmFuZ2UuZW5kKSB7CiAgICAgICAgICAgICBbdGFzayByZXNvdXJjZUZpbmlzaGVkOm51
bGxwdHIgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9XTsKLSAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2dlbmVyYXRvciwgdGFza10gewotICAgICAgICAgICAgICAgIGlmIChnZW5l
cmF0b3IpCi0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVtb3ZlVGFzayh0YXNrLmdl
dCgpKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvcikKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnJlbW92ZVRhc2sodGFzay5nZXQoKSk7CiAgICAgICAgIH0K
ICAgICB9OwogCiAgICAgc3dpdGNoICh0YXNrRGF0YS0+cmVzcG9uc2VTdGF0ZSkgewogICAgIGNh
c2UgRGF0YTo6VGFza0RhdGE6OlJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0OiB7CiAg
ICAgICAgIGF1dG8gcmVzcG9uc2UgPSBzeW50aGVzaXplZFJlc3BvbnNlRm9yUmFuZ2UoZGF0YS5v
cmlnaW5hbFJlc3BvbnNlLCByYW5nZSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKLSAgICAgICAg
W3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZFJlc3BvbnNlOnJlc3BvbnNlIGNvbXBsZXRp
b25IYW5kbGVyOltnaXZlQnl0ZXNUb1Rhc2sgPSBXVEZNb3ZlKGdpdmVCeXRlc1RvVGFzayksIHRh
c2tEYXRhID0gV2Vha1B0ciB7IHRhc2tEYXRhIH0sIHRhc2sgPSByZXRhaW5QdHIodGFzayldIChX
ZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIHNob3VsZENvbnRpbnVlKSB7CisgICAg
ICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWRSZXNwb25zZTpyZXNwb25zZSBjb21w
bGV0aW9uSGFuZGxlcjpbZ2l2ZUJ5dGVzVG9UYXNrID0gV1RGTW92ZShnaXZlQnl0ZXNUb1Rhc2sp
LCB0YXNrRGF0YSA9IFdlYWtQdHIgeyB0YXNrRGF0YSB9LCB0YXNrID0gcmV0YWluUHRyKHRhc2sp
XSAoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayBzaG91bGRDb250aW51ZSkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAodGFza0RhdGEpCiAgICAgICAgICAgICAgICAgdGFza0Rh
dGEtPnJlc3BvbnNlU3RhdGUgPSBEYXRhOjpUYXNrRGF0YTo6UmVzcG9uc2VTdGF0ZTo6U2Vzc2lv
bkNhbGxlZENvbXBsZXRpb25IYW5kbGVyOwogICAgICAgICAgICAgaWYgKHNob3VsZENvbnRpbnVl
ID09IFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6OlllcykKQEAgLTE2Nyw3ICsxNjAsNiBAQCB2
b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJh
bmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogCiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29uc3QgRGF0YSYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nl
c3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRp
bmc6OlllcykKICAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIApAQCAtMTgwLDcg
KzE3Miw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpl
eHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiAKIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcyhEYXRhJiBkYXRh
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNz
ZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoZGF0YSk7CiAKICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBkYXRhLnRhc2tEYXRhKQpAQCAtMTg5LDcgKzE4MSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcyhEYXRhJiBkYXRh
KQogCiBib29sIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OndpbGxIYW5kbGVSZXF1ZXN0KFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNP
bldvcmtRdWV1ZSgpOwogICAgIGF1dG8qIGRhdGEgPSBtX21hcC5nZXQocmVxdWVzdC5VUkwuYWJz
b2x1dGVTdHJpbmcpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjM0LDEzICsyMjYsMTEgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25z
ZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgZmluYWwKICAgICB7Ci0gICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0
KG1fdXJsU3RyaW5nKTsKQEAgLTI1Miw3ICsyNDIsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBs
b2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSBmaW5hbAogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAg
ICAgaWYgKCFtX2dlbmVyYXRvcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBk
YXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLnRha2UobV91cmxTdHJpbmcpOwpAQCAtMjY0LDcgKzI1
Myw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbAogICAgIHsKLSAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgUmVmUHRyIGdlbmVyYXRvciB7IG1fZ2Vu
ZXJhdG9yLmdldCgpIH07CiAgICAgICAgIGlmICghZ2VuZXJhdG9yKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjgyLDcgKzI3MCw3IEBAIHByaXZhdGU6CiAKIGJvb2wgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6d2lsbFN5bnRoZXNpemVSYW5nZVJlc3BvbnNlcyhXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKnRhc2ssIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIE5TVVJMUmVx
dWVzdCAqb3JpZ2luYWxSZXF1ZXN0ID0gdGFzay5vcmlnaW5hbFJlcXVlc3Q7CiAgICAgaWYgKCFv
cmlnaW5hbFJlcXVlc3QuVVJMKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCmluZGV4IGVhNGE5YmYyOTc4MjllYmQwMjkxNDc2Y2JmOGE3ZTU0OTQ3MjEyNmQuLjZi
YmEzYmFkNDAwYWQzZThkMTUxMTYxYWZlNTRlNjE3ZGQxMWNlMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
LmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdpbi5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VS
TFNlc3Npb24uaD4KKyNpbXBvcnQgPHd0Zi9BdG9taWNzLmg+CiAjaW1wb3J0IDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTG9j
ay5oPgpAQCAtNTAsMTIgKzUxLDE0IEBAIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xp
ZW50OwogZW51bSBjbGFzcyBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIDogYm9vbDsKIH0KIAor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBXb3JrUXVldWU7Cit9CisKIGVudW0gY2xhc3MgV2ViQ29y
ZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHMgOiB1aW50OF90IHsKICAgICBVbmtu
b3duLAogICAgIFBhc3MsCkBAIC02NCwyMCArNjcsMjIgQEAgZW51bSBjbGFzcyBXZWJDb3JlTlNV
UkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0cyA6IHVpbnQ4X3QgewogCiBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgogCisvLyBDcmVhdGVkIG9uIHRoZSBtYWluIHRocmVhZDsgdXNlZCBvbiB0
YXJnZXRRdWV1ZS4KIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lv
biA6IE5TT2JqZWN0IHsKIEBwcml2YXRlCiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlcj4gX2xvYWRlcjsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IF90
YXJnZXRRdWV1ZTsKICAgICBXZWFrT2JqQ1B0cjxpZDxOU1VSTFNlc3Npb25EZWxlZ2F0ZT4+IF9k
ZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8TlNPcGVyYXRpb25RdWV1ZT4gX3F1ZXVlOwogICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gX3Nlc3Npb25EZXNjcmlwdGlvbjsKLSAgICBIYXNoU2V0PFJldGFp
blB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+PiBfZGF0YVRhc2tzOwotICAgIEhhc2hT
ZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gX29yaWdpbnM7CiAgICAgTG9jayBf
ZGF0YVRhc2tzTG9jazsKLSAgICBCT09MIF9pbnZhbGlkYXRlZDsKKyAgICBIYXNoU2V0PFJldGFp
blB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+PiBfZGF0YVRhc2tzOyAvLyBQcm90ZWN0
ZWQgYnkgX2RhdGFUYXNrc0xvY2sKKyAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4+IF9vcmlnaW5zOyAvLyBBY2Nlc3NlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAg
V1RGOjpBdG9taWM8Qk9PTD4gX2ludmFsaWRhdGVkOwogICAgIE5TVUludGVnZXIgX25leHRUYXNr
SWRlbnRpZmllcjsKLSAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBfaW50ZXJuYWxR
dWV1ZTsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IF9pbnRlcm5hbFF1ZXVlOwogICAgIFdl
YkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzIF9jb3JzUmVzdWx0czsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcj4gX3JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I+IF9y
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOyAvLyBDcmVhdGVkIG9uIG1haW4gdGhyZWFkOyBvbmx5IGFj
Y2Vzc2VkIG9uIF90YXJnZXRRdWV1ZQogfQogLSAoaWQpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjoo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJilsb2FkZXIgZGVsZWdhdGU6KGlk
PE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4pZGVsZWdhdGUgZGVsZWdhdGVRdWV1ZTooTlNPcGVy
YXRpb25RdWV1ZSopcXVldWU7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCByZXRhaW4pIE5TT3BlcmF0
aW9uUXVldWUgKmRlbGVnYXRlUXVldWU7CkBAIC04NSw2ICs5MCw3IEBAIFdFQkNPUkVfRVhQT1JU
IEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIEBwcm9wZXJ0eSAo
cmVhZG9ubHksIGNvcHkpIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb247
CiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpzZXNzaW9uRGVzY3JpcHRpb247CiBAcHJvcGVy
dHkgKHJlYWRvbmx5KSBCT09MIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2tzOworQHByb3BlcnR5IChh
c3NpZ24sIGF0b21pYykgV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHMg
Y29yc1Jlc3VsdHM7CiAtICh2b2lkKWZpbmlzaFRhc2tzQW5kSW52YWxpZGF0ZTsKIC0gKHZvaWQp
aW52YWxpZGF0ZUFuZENhbmNlbDsKIC0gKEJPT0wpd291bGRUYWludE9yaWdpbjooY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mKW9yaWdpbjsKQEAgLTEyMCwyMCArMTI2LDIyIEBAIFdFQkNP
UkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0g
KHZvaWQpc2VuZEgyUGluZzooTlNVUkwgKil1cmwgcG9uZ0hhbmRsZXI6KHZvaWQgKF4pKE5TRXJy
b3IgKiBfTnVsbGFibGUgZXJyb3IsIE5TVGltZUludGVydmFsIGludGVydmFsKSlwb25nSGFuZGxl
cjsKIEBlbmQKIAorLy8gQ3JlYXRlZCBvbiBjb20uYXBwbGUuYXZmb3VuZGF0aW9uLmN1c3RvbXVy
bC5uc3VybHNlc3Npb24KIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIDog
TlNPYmplY3QgewogICAgIFdlYWtPYmpDUHRyPFdlYkNvcmVOU1VSTFNlc3Npb24+IF9zZXNzaW9u
OworICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gX3RhcmdldFF1ZXVlOwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IF9yZXNvdXJjZTsKLSAgICBSZXRhaW5QdHI8
TlNVUkxSZXNwb25zZT4gX3Jlc3BvbnNlOworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBf
cmVzcG9uc2U7IC8vIFNldCBvbiBvcGVyYXRpb24gcXVldWUuCiAgICAgTlNVSW50ZWdlciBfdGFz
a0lkZW50aWZpZXI7Ci0gICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gX29yaWdpbmFsUmVxdWVz
dDsKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBfY3VycmVudFJlcXVlc3Q7CisgICAgUmV0
YWluUHRyPE5TVVJMUmVxdWVzdD4gX29yaWdpbmFsUmVxdWVzdDsgLy8gU2V0IG9uIGNvbnN0cnVj
dGlvbiwgbmV2ZXIgbW9kaWZpZWQuCisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gX2N1cnJl
bnRSZXF1ZXN0OyAvLyBTZXQgb24gY29uc3RydWN0aW9uLCBuZXZlciBtb2RpZmllZC4KICAgICBp
bnQ2NF90IF9jb3VudE9mQnl0ZXNSZWNlaXZlZDsKICAgICBpbnQ2NF90IF9jb3VudE9mQnl0ZXNT
ZW50OwogICAgIGludDY0X3QgX2NvdW50T2ZCeXRlc0V4cGVjdGVkVG9TZW5kOwogICAgIGludDY0
X3QgX2NvdW50T2ZCeXRlc0V4cGVjdGVkVG9SZWNlaXZlOwogICAgIE5TVVJMU2Vzc2lvblRhc2tT
dGF0ZSBfc3RhdGU7Ci0gICAgUmV0YWluUHRyPE5TRXJyb3I+IF9lcnJvcjsKLSAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IF90YXNrRGVzY3JpcHRpb247CisgICAgUmV0YWluUHRyPE5TRXJyb3I+IF9l
cnJvcjsgLy8gVW51c2VkLCBhbHdheXMgbmlsLgorICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3Rh
c2tEZXNjcmlwdGlvbjsgLy8gT25seSBzZXQgLyByZWFkIG9uIHRoZSB1c2VyJ3MgdGhyZWFkLgog
ICAgIGZsb2F0IF9wcmlvcml0eTsKIH0KIApAQCAtMTQ1LDcgKzE1Myw3IEBAIFdFQkNPUkVfRVhQ
T1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIEBwcm9wZXJ0
eSBpbnQ2NF90IGNvdW50T2ZCeXRlc1NlbnQ7CiBAcHJvcGVydHkgaW50NjRfdCBjb3VudE9mQnl0
ZXNFeHBlY3RlZFRvU2VuZDsKIEBwcm9wZXJ0eSBpbnQ2NF90IGNvdW50T2ZCeXRlc0V4cGVjdGVk
VG9SZWNlaXZlOwotQHByb3BlcnR5IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZSBzdGF0ZTsKK0Bwcm9w
ZXJ0eSAoYXNzaWduLCBhdG9taWMpIE5TVVJMU2Vzc2lvblRhc2tTdGF0ZSBzdGF0ZTsKIEBwcm9w
ZXJ0eSAobnVsbGFibGUsIHJlYWRvbmx5LCBjb3B5KSBOU0Vycm9yICplcnJvcjsKIEBwcm9wZXJ0
eSAobnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICp0YXNrRGVzY3JpcHRpb247CiBAcHJvcGVydHkg
ZmxvYXQgcHJpb3JpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggM2M4YmUwOGMyOTM0
ZTU0ZGEzYjc0OWNhNmRhMzRlZGE5NmRjOWI4Yi4uZmE3ZjE2MWNkMTkyMWJmZTMxMGY1NzQxOGJj
ODkyZTdjZjQ5MTMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtMzcsOSArMzcsMTEg
QEAKICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL0xvY2su
aD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5o
PgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdURjsKIAogI3ByYWdtYSBtYXJrIC0gUHJpdmF0ZSBk
ZWNsYXJhdGlvbnMKIApAQCAtNTYsNyArNTgsNyBAQCBzdGF0aWMgTlNEYXRlICogX19udWxsYWJs
ZSBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKE1vbm90b25pY1RpbWUgdGltZSkKIH0KIAogQGludGVy
ZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyA6IE5TT2JqZWN0
Ci0tIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWV0cmljczooV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJiYpbWV0cmljczsKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzIG9uVGFyZ2V0OihXVEY6OldvcmtRdWV1
ZSopd29ya1F1ZXVlOwogQHByb3BlcnR5IChudWxsYWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0
ZSAqZmV0Y2hTdGFydERhdGU7CiBAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkg
TlNEYXRlICpkb21haW5Mb29rdXBTdGFydERhdGU7CiBAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5
LCByZWFkb25seSkgTlNEYXRlICpkb21haW5Mb29rdXBFbmREYXRlOwpAQCAtNzksMjEgKzgxLDIz
IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNh
Y3Rpb25NZXRyaWNzIHsKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgX21ldHJpY3M7
CisgICAgUmVmUHRyPFdURjo6V29ya1F1ZXVlPiBfdGFyZ2V0UXVldWU7CiB9CiAKLS0gKGluc3Rh
bmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJilt
ZXRyaWNzCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWV0cmljczooV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJiYpbWV0cmljcyBvblRhcmdldDooV1RGOjpXb3JrUXVldWUqKXF1ZXVlCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBxdWV1ZS0+YXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOworCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgX21ldHJpY3MgPSBtZXRyaWNzOworICAgIF9tZXRyaWNzID0gV1RGTW92ZSht
ZXRyaWNzKTsKKyAgICBfdGFyZ2V0UXVldWUgPSBxdWV1ZTsKICAgICByZXR1cm4gc2VsZjsKIH0K
IAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9j
YXRlT25NYWluVGhyZWFkKFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNz
LmNsYXNzLCBzZWxmKSkKLSAgICAgICAgcmV0dXJuOworICAgIF90YXJnZXRRdWV1ZS0+ZGlzcGF0
Y2goW21ldHJpY3MgPSBXVEZNb3ZlKF9tZXRyaWNzKV0geyB9KTsKIAogICAgIFtzdXBlciBkZWFs
bG9jXTsKIH0KQEAgLTIxNywyOCArMjIxLDI5IEBAIC0gKEJPT0wpbXVsdGlwYXRoCiBAZW5kCiAK
IEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzIDogTlNPYmplY3QKLS0g
KGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmJiltZXRyaWNzOworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3Mgb25UYXJnZXQ6KG5vbm51bGwgV1RGOjpXb3Jr
UXVldWUgKil0YXJnZXRRdWV1ZTsKIEBwcm9wZXJ0eSAoY29weSwgcmVhZG9ubHkpIE5TQXJyYXk8
TlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyAqPiAqdHJhbnNhY3Rpb25NZXRyaWNz
OwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNz
IHsKICAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJp
Y3M+IF90cmFuc2FjdGlvbk1ldHJpY3M7CisgICAgUmVmUHRyPFdURjo6V29ya1F1ZXVlPiBfdGFy
Z2V0UXVldWU7CiB9CiAKLS0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
TWV0cmljczooV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpbWV0cmljcyBvblRhcmdldDoo
bm9ubnVsbCBXVEY6OldvcmtRdWV1ZSAqKXRhcmdldFF1ZXVlCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICB0YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogCiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
X3RyYW5zYWN0aW9uTWV0cmljcyA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1Ry
YW5zYWN0aW9uTWV0cmljcyBhbGxvY10gX2luaXRXaXRoTWV0cmljczpXVEZNb3ZlKG1ldHJpY3Mp
XSk7CisgICAgX3RhcmdldFF1ZXVlID0gdGFyZ2V0UXVldWU7CisgICAgX3RyYW5zYWN0aW9uTWV0
cmljcyA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmlj
cyBhbGxvY10gX2luaXRXaXRoTWV0cmljczpXVEZNb3ZlKG1ldHJpY3MpIG9uVGFyZ2V0OnRhcmdl
dFF1ZXVlXSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAg
IGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChXZWJDb3JlTlNV
UkxTZXNzaW9uVGFza01ldHJpY3MuY2xhc3MsIHNlbGYpKQotICAgICAgICByZXR1cm47CisgICAg
X3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbbWV0cmljcyA9IFdURk1vdmUoX3RyYW5zYWN0aW9uTWV0
cmljcyldIHsgfSk7CiAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC0yNDYsNiArMjUxLDgg
QEAgLSAodm9pZClkZWFsbG9jCiBAZHluYW1pYyB0cmFuc2FjdGlvbk1ldHJpY3M7CiAtIChOU0Fy
cmF5PE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKj4gKil0cmFuc2FjdGlvbk1l
dHJpY3MKIHsKKyAgICAvLyBUT0RPOiBUaGlzIGlzIGxpa2VseSBub3QgdGhyZWFkLXNhZmUuIEhv
dyB0byBoYW5kbGUgdGhpcyBvYmplY3Q/CisgICAgLy8gQWNjZXNzZWQgZnJvbSBkZWxlZ2F0ZSB0
aHJlYWQuCiAgICAgcmV0dXJuIEBbIChOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNz
ICopc2VsZi0+X3RyYW5zYWN0aW9uTWV0cmljcy5nZXQoKSBdOwogfQogCkBAIC0yNjIsNyArMjY5
LDcgQEAgLSAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvciYpcmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjsKIEBlbmQKIAogQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
KCkKLS0gKGlkKWluaXRXaXRoU2Vzc2lvbjooV2ViQ29yZU5TVVJMU2Vzc2lvbiAqKXNlc3Npb24g
aWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlmaWVyIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3Q7CistIChpZClpbml0V2l0aFNlc3Npb246KFdlYkNvcmVOU1VSTFNlc3Npb24gKilz
ZXNzaW9uIGlkZW50aWZpZXI6KE5TVUludGVnZXIpaWRlbnRpZmllciByZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IHRhcmdldFF1ZXVlOihXVEY6OldvcmtRdWV1ZSopdGFyZ2V0UXVldWU7
CiAtICh2b2lkKV9yZXN0YXJ0OwogLSAodm9pZClfY2FuY2VsOwogQHByb3BlcnR5IChhc3NpZ24p
IFdlYkNvcmVOU1VSTFNlc3Npb24gKiBfTnVsbGFibGUgc2Vzc2lvbjsKQEAgLTI3NCwyMCArMjgx
LDI0IEBAIE5TX0FTU1VNRV9OT05OVUxMX0VORAogI3ByYWdtYSBtYXJrIC0gV2ViQ29yZU5TVVJM
U2Vzc2lvbgogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZU5TVVJMU2Vzc2lvbgorQHN5bnRoZXNp
emUgY29yc1Jlc3VsdHMgPSBfY29yc1Jlc3VsdHM7CisKIC0gKGlkKWluaXRXaXRoUmVzb3VyY2VM
b2FkZXI6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYpbG9hZGVyIGRlbGVnYXRlOihpZDxO
U1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+KWluRGVsZWdhdGUgZGVsZWdhdGVRdWV1ZTooTlNPcGVy
YXRpb25RdWV1ZSopaW5RdWV1ZQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBBU1NFUlQoX2NvcnNSZXN1bHRzID09IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNj
ZXNzQ2hlY2tSZXN1bHRzOjpVbmtub3duKTsKLSAgICBBU1NFUlQoIV9pbnZhbGlkYXRlZCk7Cisg
ICAgQVNTRVJUKCFfaW52YWxpZGF0ZWQubG9hZCgpKTsKIAogICAgIF9sb2FkZXIgPSAmbG9hZGVy
OworICAgIF90YXJnZXRRdWV1ZSA9IF9sb2FkZXItPnRhcmdldFF1ZXVlKCk7CiAgICAgc2VsZi5k
ZWxlZ2F0ZSA9IGluRGVsZWdhdGU7CiAgICAgX3F1ZXVlID0gaW5RdWV1ZSA/IGluUXVldWUgOiBb
TlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdOwotICAgIF9pbnRlcm5hbFF1ZXVlID0gYWRvcHRP
U09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVOU1VSTFNlc3Npb24gX2ludGVy
bmFsUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKLSAgICBfcmFuZ2VSZXNwb25zZUdl
bmVyYXRvciA9IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmNyZWF0ZSgpOworICAgIF9pbnRlcm5h
bFF1ZXVlID0gV1RGOjpXb3JrUXVldWU6OmNyZWF0ZSgiV2ViQ29yZU5TVVJMU2Vzc2lvbiBfaW50
ZXJuYWxRdWV1ZSIpOworICAgIF9yYW5nZVJlc3BvbnNlR2VuZXJhdG9yID0gUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcjo6Y3JlYXRlKCpfdGFyZ2V0UXVldWUpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9
CkBAIC0yOTYsMTcgKzMwNywxOSBAQCAtICh2b2lkKWRlYWxsb2MKIHsKICAgICB7CiAgICAgICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIoX2RhdGFUYXNrc0xvY2spOwotICAgICAgICBmb3IgKGF1dG8m
IHRhc2sgOiBfZGF0YVRhc2tzKQotICAgICAgICAgICAgW3Rhc2sgc2V0U2Vzc2lvbjpuaWxdOwor
ICAgICAgICBfdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtkYXRhVGFza3MgPSBXVEZNb3ZlKF9kYXRh
VGFza3MpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYmIHRhc2sgOiBkYXRh
VGFza3MpCisgICAgICAgICAgICAgICAgW3Rhc2sgc2V0U2Vzc2lvbjpuaWxdOworICAgICAgICB9
KTsKICAgICB9CisgICAgZW5zdXJlT25NYWluVGhyZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKF9sb2Fk
ZXIpXSB7IH0pOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbbG9hZGVyID0gV1RGTW92ZShfbG9h
ZGVyKV0gewotICAgIH0pOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAoaWQpY29weVdp
dGhab25lOihOU1pvbmUgKil6b25lCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBVTlVTRURfUEFSQU0oem9uZSk7CiAgICAgcmV0dXJuIFtzZWxmIHJldGFpbl07CiB9CkBAIC0z
MTUsNiArMzI4LDcgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAKIC0gKHZv
aWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzawogewor
ICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIHRhc2suc2Vzc2lv
biA9IG5pbDsKIAogICAgIHsKQEAgLTMyMiwxMiArMzM2LDExIEBAIC0gKHZvaWQpdGFza0NvbXBs
ZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzawogCiAgICAgICAgIEFTU0VS
VChfZGF0YVRhc2tzLmNvbnRhaW5zKHRhc2spKTsKICAgICAgICAgX2RhdGFUYXNrcy5yZW1vdmUo
dGFzayk7Ci0gICAgICAgIGlmICghX2RhdGFUYXNrcy5pc0VtcHR5KCkgfHwgIV9pbnZhbGlkYXRl
ZCkKKyAgICAgICAgaWYgKCFfZGF0YVRhc2tzLmlzRW1wdHkoKSB8fCAhX2ludmFsaWRhdGVkLmxv
YWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8V2ViQ29y
ZU5TVVJMU2Vzc2lvbj4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKLSAgICBbc2VsZiBhZGREZWxlZ2F0
ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZl0geworICAgIFtzZWxmIGFkZERlbGVnYXRlT3BlcmF0aW9u
OltzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIGlmIChbc3Ryb25nU2Vs
Zi5nZXQoKS5kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246
ZGlkQmVjb21lSW52YWxpZFdpdGhFcnJvcjopXSkKICAgICAgICAgICAgIFtzdHJvbmdTZWxmLmdl
dCgpLmRlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkg
ZGlkQmVjb21lSW52YWxpZFdpdGhFcnJvcjpuaWxdOwogICAgIH1dOwpAQCAtMzM1LDkgKzM0OCw4
IEBAIC0gKHZvaWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICop
dGFzawogCiAtICh2b2lkKWFkZERlbGVnYXRlT3BlcmF0aW9uOihGdW5jdGlvbjx2b2lkKCk+JiYp
ZnVuY3Rpb24KIHsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbj4gc3Ryb25nU2Vs
ZiB7IHNlbGYgfTsKICAgICBSZXRhaW5QdHI8TlNCbG9ja09wZXJhdGlvbj4gb3BlcmF0aW9uID0g
W05TQmxvY2tPcGVyYXRpb24gYmxvY2tPcGVyYXRpb25XaXRoQmxvY2s6bWFrZUJsb2NrUHRyKFdU
Rk1vdmUoZnVuY3Rpb24pKS5nZXQoKV07Ci0gICAgZGlzcGF0Y2hfYXN5bmMoX2ludGVybmFsUXVl
dWUuZ2V0KCksIFtzdHJvbmdTZWxmLCBvcGVyYXRpb25dIHsKKyAgICBfaW50ZXJuYWxRdWV1ZS0+
ZGlzcGF0Y2goW3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIG9wZXJhdGlvbiA9IFdURk1v
dmUob3BlcmF0aW9uKV0gewogICAgICAgICBbc3Ryb25nU2VsZi5nZXQoKS5kZWxlZ2F0ZVF1ZXVl
IGFkZE9wZXJhdGlvbjpvcGVyYXRpb24uZ2V0KCldOwogICAgICAgICBbb3BlcmF0aW9uIHdhaXRV
bnRpbEZpbmlzaGVkXTsKICAgICB9KTsKQEAgLTM0NSwyMSArMzU3LDI0IEBAIC0gKHZvaWQpYWRk
RGVsZWdhdGVPcGVyYXRpb246KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgogCiAtICh2b2lk
KXRhc2s6KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqKXRhc2sgZGlkUmVjZWl2ZUNPUlNB
Y2Nlc3NDaGVja1Jlc3VsdDooQk9PTClyZXN1bHQKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2Vy
dElzT25Xb3JrUXVldWUoKTsKICAgICBVTlVTRURfUEFSQU0odGFzayk7CiAgICAgaWYgKCFyZXN1
bHQpCi0gICAgICAgIF9jb3JzUmVzdWx0cyA9IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNz
Q2hlY2tSZXN1bHRzOjpGYWlsOwotICAgIGVsc2UgaWYgKF9jb3JzUmVzdWx0cyAhPSBXZWJDb3Jl
TlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0czo6RmFpbCkKLSAgICAgICAgX2NvcnNS
ZXN1bHRzID0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlBhc3M7
CisgICAgICAgIHNlbGYuY29yc1Jlc3VsdHMgPSBXZWJDb3JlTlNVUkxTZXNzaW9uQ09SU0FjY2Vz
c0NoZWNrUmVzdWx0czo6RmFpbDsKKyAgICBlbHNlIGlmIChzZWxmLmNvcnNSZXN1bHRzICE9IFdl
YkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpGYWlsKQorICAgICAgICBz
ZWxmLmNvcnNSZXN1bHRzID0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3Vs
dHM6OlBhc3M7CiB9CiAKIC0gKHZvaWQpdGFzazooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
ICopdGFzayBkaWRSZWNlaXZlUmVzcG9uc2VGcm9tT3JpZ2luOihSZWY8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+JiYpb3JpZ2luCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1
ZXVlKCk7CiAgICAgVU5VU0VEX1BBUkFNKHRhc2spOwogICAgIF9vcmlnaW5zLmFkZChXVEZNb3Zl
KG9yaWdpbikpOwogfQogCiAtIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yJilyYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1
ZXVlKCk7CiAgICAgcmV0dXJuICpfcmFuZ2VSZXNwb25zZUdlbmVyYXRvcjsKIH0KIApAQCAtNDA2
LDcgKzQyMSw3IEBAIC0gKFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYpbG9hZGVyCiBAZHlu
YW1pYyBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrczsKIC0gKEJPT0wpZGlkUGFzc0NPUlNBY2Nlc3ND
aGVja3MKIHsKLSAgICByZXR1cm4gX2NvcnNSZXN1bHRzID09IFdlYkNvcmVOU1VSTFNlc3Npb25D
T1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpQYXNzOworICAgIHJldHVybiBzZWxmLmNvcnNSZXN1bHRz
ID09IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpQYXNzOwogfQog
CiAtIChCT09MKXdvdWxkVGFpbnRPcmlnaW46KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
ICYpb3JpZ2luCkBAIC00MjAsNyArNDM1LDcgQEAgLSAoQk9PTCl3b3VsZFRhaW50T3JpZ2luOihj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiAmKW9yaWdpbgogCiAtICh2b2lkKWZpbmlzaFRh
c2tzQW5kSW52YWxpZGF0ZQogewotICAgIF9pbnZhbGlkYXRlZCA9IFlFUzsKKyAgICBfaW52YWxp
ZGF0ZWQuc3RvcmUoWUVTKTsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoX2Rh
dGFUYXNrc0xvY2spOwogICAgICAgICBpZiAoIV9kYXRhVGFza3MuaXNFbXB0eSgpKQpAQCAtNDk0
LDEwICs1MDksMTAgQEAgLSAodm9pZClnZXRBbGxUYXNrc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoTlNBcnJheTxfX2tpbmRvZiBOU1VSTFNlc3Npb24KIAogLSAoTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKilkYXRhVGFza1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7
Ci0gICAgaWYgKF9pbnZhbGlkYXRlZCkKKyAgICBpZiAoX2ludmFsaWRhdGVkLmxvYWQoKSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2sgYWxsb2NdIGluaXRXaXRoU2Vzc2lvbjpzZWxmIGlkZW50aWZpZXI6
X25leHRUYXNrSWRlbnRpZmllcisrIHJlcXVlc3Q6cmVxdWVzdF0pOworICAgIGF1dG8gdGFzayA9
IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgYWxsb2NdIGluaXRXaXRoU2Vz
c2lvbjpzZWxmIGlkZW50aWZpZXI6X25leHRUYXNrSWRlbnRpZmllcisrIHJlcXVlc3Q6cmVxdWVz
dCB0YXJnZXRRdWV1ZTpfdGFyZ2V0UXVldWUuZ2V0KCldKTsKICAgICB7CiAgICAgICAgIExvY2tl
cjxMb2NrPiBsb2NrZXIoX2RhdGFUYXNrc0xvY2spOwogICAgICAgICBfZGF0YVRhc2tzLmFkZCh0
YXNrLmdldCgpKTsKQEAgLTUxNCw3ICs1MjksNyBAQCAtICh2b2lkKXNlbmRIMlBpbmc6KE5TVVJM
ICopdXJsIHBvbmdIYW5kbGVyOih2b2lkICheKShOU0Vycm9yICplcnJvciwgTlNUaW1lSW50ZQog
ewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2Vs
ZiksIHVybCA9IHJldGFpblB0cih1cmwpLCBwb25nSGFuZGxlciA9IG1ha2VCbG9ja1B0cihwb25n
SGFuZGxlcildICgpIG11dGFibGUgewogCi0gICAgICAgIGlmIChfaW52YWxpZGF0ZWQpCisgICAg
ICAgIGlmIChfaW52YWxpZGF0ZWQubG9hZCgpKQogICAgICAgICAgICAgcmV0dXJuIHBvbmdIYW5k
bGVyKGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpOU1VSTEVycm9yRG9t
YWluIGNvZGU6TlNVUkxFcnJvclVua25vd24gdXNlckluZm86bmlsXSkuZ2V0KCksIDApOwogCiAg
ICAgICAgIHNlbGYubG9hZGVyLnNlbmRIMlBpbmcodXJsLmdldCgpLCBbc2VsZiwgc3Ryb25nU2Vs
ZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHBvbmdIYW5kbGVyID0gV1RGTW92ZShwb25nSGFuZGxl
cildIChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmIHJlc3VsdCkgbXV0YWJsZSB7
CkBAIC01MjQsOCArNTM5LDEwIEBAIC0gKHZvaWQpc2VuZEgyUGluZzooTlNVUkwgKil1cmwgcG9u
Z0hhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKmVycm9yLCBOU1RpbWVJbnRlCiAgICAgICAgICAg
ICAgICAgaW50ZXJ2YWwgPSByZXN1bHQudmFsdWUoKS52YWx1ZSgpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGVycm9yID0gcmVzdWx0LmVycm9yKCk7Ci0gICAgICAgICAgICBb
c2VsZiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbcG9uZ0hhbmRsZXIgPSBXVEZNb3ZlKHBvbmdIYW5k
bGVyKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKSwgaW50ZXJ2YWxdIHsKLSAgICAgICAgICAgICAg
ICBwb25nSGFuZGxlcihlcnJvci5nZXQoKSwgaW50ZXJ2YWwpOworICAgICAgICAgICAgW3NlbGYg
YWRkRGVsZWdhdGVPcGVyYXRpb246W3BvbmdIYW5kbGVyID0gV1RGTW92ZShwb25nSGFuZGxlciks
IGVycm9yID0gV1RGTW92ZShlcnJvciksIGludGVydmFsXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwb25nSGFuZGxlciA9IFdURk1vdmUocG9uZ0hhbmRs
ZXIpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpLCBpbnRlcnZhbF0geworICAgICAgICAgICAgICAg
ICAgICBwb25nSGFuZGxlcihlcnJvci5nZXQoKSwgaW50ZXJ2YWwpOworICAgICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgfV07CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNTk3LDkgKzYx
NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2tDbGllbnQgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2tDbGllbnQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQorICAgIFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2sgKnRhc2ssIFdURjo6V29ya1F1ZXVlJiB0YXJnZXQpCiAgICAgICAgIDogbV90YXNrKHRhc2sp
CisgICAgICAgICwgbV90YXJnZXRRdWV1ZSh0YXJnZXQpCiAgICAgeworICAgICAgICBtX3Rhcmdl
dFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgfQogCiAgICAgdm9pZCBjbGVhclRh
c2soKTsKQEAgLTYxNCwxOSArNjMzLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRGaW5pc2hl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKLSAgICBMb2NrIG1fdGFza0xvY2s7Ci0gICAgV2Vha09iakNQdHI8
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2sgV1RGX0dVQVJERURfQllfTE9DSyht
X3Rhc2tMb2NrKTsKKyAgICBXZWFrT2JqQ1B0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+
IG1fdGFzazsgLy8gT25seSBhY2Nlc3NlZCBvbiB0YXJnZXQgcXVldWUuCisgICAgUmVmPFdURjo6
V29ya1F1ZXVlPiBtX3RhcmdldFF1ZXVlOwogfTsKIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2tDbGllbnQ6OmNsZWFyVGFzaygpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFz
a0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAg
bV90YXNrID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tD
bGllbnQ6OmRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1
ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNjM1LDggKzY1NCw4IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrQ2xpZW50OjpkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlCiAKIHZv
aWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25X
b3JrUXVldWUoKTsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgTG9ja2Vy
IGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKIApAQCAt
NjQ1LDcgKzY2NCw3IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpy
ZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYKIAogYm9vbCBXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5h
c3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtNjU0LDcgKzY3Myw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAKIHZv
aWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5h
c3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsK
IApAQCAtNjYzLDIwICs2ODIsMTYgQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tD
bGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc28KIAogdm9pZCBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Rhc2tMb2NrIH07CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpOwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV90YXNrIHJl
c291cmNlOiZyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0OnJlc3BvbnNlIHJlcXVlc3Q6V1RGTW92
ZShyZXF1ZXN0KSBjb21wbGV0aW9uSGFuZGxlcjogW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgcmVxdWVzdCkgbXV0YWJsZSB7Ci0gICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3JlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwotICAgICAg
ICB9KTsKLSAgICB9XTsKKyAgICBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSByZWNlaXZlZFJl
ZGlyZWN0OnJlc3BvbnNlIHJlcXVlc3Q6V1RGTW92ZShyZXF1ZXN0KSBjb21wbGV0aW9uSGFuZGxl
cjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CiB9CiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJ
c09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIApAQCAt
Njg1LDcgKzcwMCw3IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojph
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlCiAKIHZvaWQgV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIExvY2tlciBs
b2NrZXIgeyBtX3Rhc2tMb2NrIH07CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKQEAgLTY5NCw3ICs3
MDksNyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cgogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV90YXNrTG9jayB9OworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3Jr
UXVldWUoKTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCkBAIC03MDYsMTIg
KzcyMSwxMyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZp
bmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzbwogI3ByYWdtYSBtYXJrIC0gV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2sKLS0gKGlkKWluaXRXaXRoU2Vzc2lvbjooV2ViQ29yZU5TVVJMU2Vzc2lvbiAq
KXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlmaWVyIHJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3QKKy0gKGlkKWluaXRXaXRoU2Vzc2lvbjooV2ViQ29yZU5TVVJMU2Vz
c2lvbiAqKXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlmaWVyIHJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdGFyZ2V0UXVldWU6KFdURjo6V29ya1F1ZXVlKil0YXJn
ZXRRdWV1ZQogewogICAgIHNlbGYudGFza0lkZW50aWZpZXIgPSBpZGVudGlmaWVyOwotICAgIHNl
bGYuc2Vzc2lvbiA9IHNlc3Npb247CiAgICAgc2VsZi5zdGF0ZSA9IE5TVVJMU2Vzc2lvblRhc2tT
dGF0ZVN1c3BlbmRlZDsKICAgICBzZWxmLnByaW9yaXR5ID0gTlNVUkxTZXNzaW9uVGFza1ByaW9y
aXR5RGVmYXVsdDsKKyAgICBfc2Vzc2lvbiA9IHNlc3Npb247CisgICAgX3RhcmdldFF1ZXVlID0g
dGFyZ2V0UXVldWU7CiAKICAgICAvLyBDb3JlTWVkaWEgd2lsbCBleHBsaWNpdGx5IGFkZCBhIHVz
ZXIgYWdlbnQgaGVhZGVyLiBSZW1vdmUgaWYgcHJlc2VudC4KICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlVVJMUmVxdWVzdD4gbXV0YWJsZVJlcXVlc3Q7CkBAIC03MzYsNyArNzUyLDcgQEAgLSAoaWQp
Y29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAKIC0gKHZvaWQpX3Jlc3RhcnQKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOwogCiAgICAgW3NlbGYgX2NhbmNlbF07CiAKQEAgLTc0NiwyMyArNzYyLDI4IEBAIC0g
KHZvaWQpX3Jlc3RhcnQKICAgICBpZiAoW3NlbGYuc2Vzc2lvbiByYW5nZVJlc3BvbnNlR2VuZXJh
dG9yXS53aWxsSGFuZGxlUmVxdWVzdChzZWxmLCBzZWxmLm9yaWdpbmFsUmVxdWVzdCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIF9yZXNvdXJjZSA9IHNlbGYuc2Vzc2lvbi5sb2FkZXIucmVxdWVz
dFJlc291cmNlKHNlbGYub3JpZ2luYWxSZXF1ZXN0LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OkxvYWRPcHRpb246OkRpc2FsbG93Q2FjaGluZyk7Ci0gICAgaWYgKF9yZXNvdXJjZSkgewot
ICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChhZG9wdFJlZigqbmV3IFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudChzZWxmKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gQSBuaWwgcmV0dXJuIGZyb20gcmVxdWVzdFJlc291cmNlIG1lYW5zIHRoZSBsb2FkIHdh
cyBjYW5jZWxsZWQgYnkgYSBkZWxlZ2F0ZSBjbGllbnQKLSAgICBbc2VsZiBfcmVzb3VyY2U6bmls
IGxvYWRGaW5pc2hlZFdpdGhFcnJvcjpSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3I6OlR5cGU6
OkNhbmNlbGxhdGlvbikgbWV0cmljczp7IH1dOworICAgIGNhbGxPbk1haW5UaHJlYWQoW2xvYWRl
ciA9IFJlZiB7IHNlbGYuc2Vzc2lvbi5sb2FkZXIgfSwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihz
ZWxmKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcmVzb3VyY2UgPSBsb2FkZXItPnJlcXVl
c3RSZXNvdXJjZShbc3Ryb25nU2VsZiBvcmlnaW5hbFJlcXVlc3RdLCBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkRpc2FsbG93Q2FjaGluZyk7CisgICAgICAgIHN0cm9u
Z1NlbGYtPl90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3Jlc291cmNlID0gV1RGTW92ZShyZXNvdXJj
ZSksIHN0cm9uZ1NlbGZdICgpIG11dGFibGUgeworICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3Jl
c291cmNlID0gcmVzb3VyY2U7CisgICAgICAgICAgICBpZiAocmVzb3VyY2UpCisgICAgICAgICAg
ICAgICAgcmVzb3VyY2UtPnNldENsaWVudChhZG9wdFJlZigqbmV3IFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudChzdHJvbmdTZWxmLmdldCgpLCAqc3Ryb25nU2VsZi0+X3RhcmdldFF1
ZXVlKSkpOworICAgICAgICAgICAgZWxzZSAvLyBBIG5pbCByZXR1cm4gZnJvbSByZXF1ZXN0UmVz
b3VyY2UgbWVhbnMgdGhlIGxvYWQgd2FzIGNhbmNlbGxlZCBieSBhIGRlbGVnYXRlIGNsaWVudAor
ICAgICAgICAgICAgICAgIFtzdHJvbmdTZWxmIF9yZXNvdXJjZTpuaWwgbG9hZEZpbmlzaGVkV2l0
aEVycm9yOlJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKSBt
ZXRyaWNzOiB7IH1dOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogLSAodm9pZClfY2FuY2Vs
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2Vy
dElzT25Xb3JrUXVldWUoKTsKKwogICAgIGlmIChfcmVzb3VyY2UpIHsKLSAgICAgICAgX3Jlc291
cmNlLT5zdG9wKCk7CiAgICAgICAgIF9yZXNvdXJjZS0+c2V0Q2xpZW50KG51bGxwdHIpOwotICAg
ICAgICBfcmVzb3VyY2UgPSBuaWw7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jlc291cmNl
ID0gX3Jlc291cmNlXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc291cmNlLT5zdG9wKCk7
CisgICAgICAgIH0pOworICAgICAgICAvLyBUT0RPOiBTaG91bGQgX3Jlc291cmNlIHNob3VsZCBi
ZSBzZXQgdG8gbmlsID8KICAgICB9CiAgICAgaWYgKGF1dG8gKnNlc3Npb24gPSBzZWxmLnNlc3Np
b24pCiAgICAgICAgIFtzZXNzaW9uIHJhbmdlUmVzcG9uc2VHZW5lcmF0b3JdLnJlbW92ZVRhc2so
c2VsZik7CkBAIC03ODksNiArODEwLDcgQEAgLSAoTlNVUkxSZXF1ZXN0ICopY3VycmVudFJlcXVl
c3QKIAogLSAoTlNFcnJvciAqKWVycm9yCiB7CisgICAgLy8gVE9ETzogX2Vycm9yIGlzIG5ldmVy
IHNldCBhbmQgaXMgYWx3YXlzIG5pbC4KICAgICByZXR1cm4gYWRvcHROUyhbX2Vycm9yIGNvcHld
KS5hdXRvcmVsZWFzZSgpOwogfQogCkBAIC04MDQsMTEgKzgyNiwxMyBAQCAtICh2b2lkKXNldFRh
c2tEZXNjcmlwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogCiAtIChXZWJDb3JlTlNVUkxT
ZXNzaW9uICopc2Vzc2lvbgogeworICAgIC8vIFRPRE86IE5vdCB0aHJlYWQgc2FmZSBhY2Nlc3M6
IGZyb20gT3BlcmF0aW9uUXVldWUgLyBNYWluVGhyZWFkIGFuZCBMb2FkZXIgdGhyZWFkLgogICAg
IHJldHVybiBfc2Vzc2lvbi5nZXQoKS5nZXQoKTsKIH0KIAogLSAodm9pZClzZXRTZXNzaW9uOihX
ZWJDb3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbgogeworICAgIC8vIEFjY2VzcyBmcm9tIG1haW4g
dGhyZWFkLCBvcGVyYXRpb24gcXVldWUgdGhyZWFkIGFuZCBsb2FkZXIgdGhyZWFkLgogICAgIF9z
ZXNzaW9uID0gc2Vzc2lvbjsKIH0KIApAQCAtODIyLDcgKzg0Niw3IEBAIC0gKHZvaWQpY2FuY2Vs
CiAgICAgaWYgKHNlbGYuc3RhdGUgPT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlQ29tcGxldGVkKQog
ICAgICAgICByZXR1cm47CiAgICAgc2VsZi5zdGF0ZSA9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZUNh
bmNlbGluZzsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpXSB7CisgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKV0gewogICAgICAgICBbcHJvdGVjdGVkU2VsZiBfY2FuY2VsXTsKICAgICAg
ICAgW3Byb3RlY3RlZFNlbGYgX3Jlc291cmNlOm51bGxwdHIgbG9hZEZpbmlzaGVkV2l0aEVycm9y
OltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJv
ckNhbmNlbGxlZCB1c2VySW5mbzpuaWxdIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07
CiAgICAgfSk7CkBAIC04MzAsNyArODU0LDcgQEAgLSAodm9pZCljYW5jZWwKIAogLSAodm9pZClz
dXNwZW5kCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0
cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNlbGYpXSB7CisgICAgX3RhcmdldFF1ZXVl
LT5kaXNwYXRjaChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2s+KHNlbGYpXSB7CiAgICAgICAgIC8vIE5TVVJMU2Vzc2lvbkRhdGFUYXNrcyBtdXN0
IHN0YXJ0IG92ZXIgYWZ0ZXIgc3VzcGVuZGluZywgc28gd2hpbGUKICAgICAgICAgLy8gd2UgY291
bGQgZGVmZXIgbG9hZGluZyBhdCB0aGlzIHBvaW50LCBpbnN0ZWFkIGNhbmNlbCBhbmQgcmVzdGFy
dAogICAgICAgICAvLyB1cG9uIHJlc3VtZSBzbyBhcyB0byBhZGhlcmUgdG8gTlNVUkxTZXNzaW9u
RGF0YVRhc2sgc2VtYW50aWNzLgpAQCAtODQxLDcgKzg2NSw3IEBAIC0gKHZvaWQpc3VzcGVuZAog
CiAtICh2b2lkKXJlc3VtZQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYg
PSBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPihzZWxmKV0geworICAgIF90
YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrPihzZWxmKV0gewogICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi5n
ZXQoKS5zdGF0ZSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVTdXNwZW5kZWQpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTg1Miw5ICs4NzYsMTEgQEAgLSAodm9pZClyZXN1bWUKIAogLSAodm9p
ZClkZWFsbG9jCiB7Ci0gICAgaWYgKCFpc01haW5UaHJlYWQoKSAmJiBfcmVzb3VyY2UpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIGNsaWVudCA9IF9yZXNvdXJjZS0+Y2xpZW50KCkpCi0gICAgICAgICAg
ICBzdGF0aWNfY2FzdDxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQqPihjbGllbnQp
LT5jbGVhclRhc2soKTsKKyAgICBpZiAoX3Jlc291cmNlKSB7CisgICAgICAgIF90YXJnZXRRdWV1
ZS0+ZGlzcGF0Y2goW2NsaWVudCA9IF9yZXNvdXJjZS0+Y2xpZW50KCldICgpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKGNsaWVudCkKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQqPihjbGllbnQuZ2V0KCkpLT5jbGVhclRhc2so
KTsKKyAgICAgICAgfSk7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jlc291cmNlID0gV1RG
TW92ZShfcmVzb3VyY2UpXSB7IH0pOwogICAgIH0KIApAQCAtODczLDYgKzg5OSw3IEBAIC0gKE5T
RGljdGlvbmFyeSAqKV90aW1pbmdEYXRhCiAKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNT
ZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0Jl
U2VudAogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2Up
OwogICAgIFVOVVNFRF9QQVJBTShieXRlc1NlbnQpOwogICAgIFVOVVNFRF9QQVJBTSh0b3RhbEJ5
dGVzVG9CZVNlbnQpOwpAQCAtODgxLDkgKzkwOCwxMCBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25n
KQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJl
Y2VpdmVkUmVzcG9uc2U6KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIGNvbXBsZXRp
b25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hl
Y2spPiYmKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09u
V29ya1F1ZXVlKCk7CiAgICAgQVNTRVJUKHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVz
cG9uc2U6OlNvdXJjZTo6TmV0d29yayB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZSB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZUFmdGVyVmFsaWRhdGlvbiB8fCByZXNwb25zZS5z
b3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwogICAg
IEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3Vy
Y2UpOwotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBbc2VsZi5zZXNzaW9uIHRh
c2s6c2VsZiBkaWRSZWNlaXZlUmVzcG9uc2VGcm9tT3JpZ2luOlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUocmVzcG9uc2UudXJsKCkpXTsKICAgICBbc2VsZi5zZXNzaW9uIHRhc2s6c2VsZiBkaWRSZWNl
aXZlQ09SU0FjY2Vzc0NoZWNrUmVzdWx0OnJlc291cmNlID8gcmVzb3VyY2UtPmRpZFBhc3NBY2Nl
c3NDb250cm9sQ2hlY2soKSA6IFlFU107CiAgICAgc2VsZi5jb3VudE9mQnl0ZXNFeHBlY3RlZFRv
UmVjZWl2ZSA9IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtODkzLDggKzky
MSw5IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWRSZXNwb25zZTooY29uc3QgUmVzb3VyCiAgICAgICAgIF9yZXNvdXJjZSA9IG51bGxw
dHI7CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGlj
eUNoZWNrOjpZZXMpOwogICAgIH0KLSAgICAKKwogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYgeyBzZWxmIH07CisgICAgLy8gQWNjZXNzIHRvIHNl
bGYuc2Vzc2lvbiBpc24ndCB0aHJlYWQtc2FmZSA7IHdlYWstcG9pbnRlciBhY3Jvc3MgdGhyZWFk
LgogICAgIGlmICghc2VsZi5zZXNzaW9uKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6Tm8pOwogICAgIFtzZWxmLnNlc3Npb24gYWRk
RGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYsIHN0cm9uZ1Jlc3BvbnNlLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKQEAgLTkw
MiwxNCArOTMxLDE0IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgUmVzb3VyCiAKICAgICAgICAgaWQ8TlNV
UkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlm
ICghW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246
ZGF0YVRhc2s6ZGlkUmVjZWl2ZVJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOildKSB7Ci0gICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0
cm9uZ1NlbGYtPl90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3N0cm9uZ1NlbGYsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olll
cyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2Vs
Zi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1Nl
bGYuZ2V0KCkgZGlkUmVjZWl2ZVJlc3BvbnNlOnN0cm9uZ1Jlc3BvbnNlLmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbc3Ryb25nU2VsZiwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24pIG11dGFibGUgewotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
c3Ryb25nU2VsZiwgZGlzcG9zaXRpb24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3Rh
cmdldFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2VsZiwgZGlzcG9zaXRpb24sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIGlmIChkaXNwb3NpdGlvbiA9PSBOU1VSTFNlc3Npb25SZXNwb25zZUNhbmNlbCkK
ICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xp
Y3lDaGVjazo6Tm8pOwogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtOTIzLDE4ICs5NTIsMTgg
QEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZFJlc3BvbnNlOihjb25zdCBSZXNvdXIKIAogLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJilyZXNwb25zZQogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJj
ZSA9PSBfcmVzb3VyY2UpOwogCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQogICAgIC8v
IEZJWE1FOiByZW1vdmUgaWYgPHJkYXI6Ly9wcm9ibGVtLzIwMDAxOTg1PiBpcyBldmVyIHJlc29s
dmVkLgogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4m
JilkYXRhCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJj
ZSk7Ci0gICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9
IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKKyAgICBbc2VsZi5z
ZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50
T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lv
bkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0
ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6
ZGlkUmVjZWl2ZURhdGE6KV0pCkBAIC05NDQsMTEgKzk3MywxMiBAQCAtICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRy
PE5TRGF0YQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJl
cXVlc3Q6KFJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVy
CiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7Ci0g
ICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IHJldGFp
blB0cihzZWxmKSwgcmVzcG9uc2UgPSByZXRhaW5QdHIocmVzcG9uc2UubnNVUkxSZXNwb25zZSgp
KSwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgIFtzZWxmLnNlc3Np
b24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHJl
c3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSksIHJlcXVlc3QgPSBy
ZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCB0YXJnZXRRdWV1ZSA9IF90YXJnZXRRdWV1ZV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICghW3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNs
YXNzXV0pIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAg
ICAgICAgdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTk1NiwxNCArOTg2LDE0
IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWRSZWRpcmVjdDooY29uc3QgUmVzb3VyCiAKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilz
dHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjp0YXNrOndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6KV0pIHsKLSAg
ICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJCbG9jayA9IG1ha2VCbG9ja1B0cihbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNVUkxSZXF1ZXN0
ICpuZXdSZXF1ZXN0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBlbnN1cmVPbk1haW5UaHJl
YWQoW3JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAg
ICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckJsb2NrID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0YXJnZXRRdWV1ZSA9IFdU
Rk1vdmUodGFyZ2V0UXVldWUpXShOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIHRhcmdldFF1ZXVlLT5kaXNwYXRjaChbcmVxdWVzdCA9IFJlc291cmNl
UmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICop
c3Ryb25nU2VsZi5nZXQoKSB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVz
cG9uc2UgKilyZXNwb25zZS5nZXQoKSBuZXdSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhU
VFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KSBjb21wbGV0aW9uSGFuZGxl
cjpjb21wbGV0aW9uSGFuZGxlckJsb2NrLmdldCgpXTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHRhcmdldFF1ZXVlLT5kaXNwYXRjaChbcmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVx
dWVzdCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTk3Miw2ICsxMDAyLDcgQEAg
LSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZFJlZGlyZWN0Oihjb25zdCBSZXNvdXIKIAogLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3IgbWV0cmljczooY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzCiB7CisgICAgX3Rh
cmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgaWYgKHNlbGYu
c3RhdGUgPT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlQ29tcGxldGVkKQogICAgICAgICByZXR1cm47
CkBAIC05ODAsNyArMTAxMSw3IEBAIC0gKHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjooTlNFcnJvCiAgICAgUmV0YWlu
UHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKICAg
ICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbj4gc3Ryb25nU2Vzc2lvbiB7IHNlbGYuc2Vz
c2lvbiB9OwogICAgIFJldGFpblB0cjxOU0Vycm9yPiBzdHJvbmdFcnJvciB7IGVycm9yIH07Ci0g
ICAgYXV0byB0YXNrTWV0cmljcyA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01l
dHJpY3MgYWxsb2NdIF9pbml0V2l0aE1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzKG1ldHJpY3Mp
XSk7CisgICAgYXV0byB0YXNrTWV0cmljcyA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9u
VGFza01ldHJpY3MgYWxsb2NdIF9pbml0V2l0aE1ldHJpY3M6bWV0cmljcy5pc29sYXRlZENvcHko
KSBvblRhcmdldDpfdGFyZ2V0UXVldWUuZ2V0KCldKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERl
bGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmLCBzdHJvbmdTZXNzaW9uLCBzdHJvbmdFcnJvciwg
dGFza01ldHJpY3MgPSBXVEZNb3ZlKHRhc2tNZXRyaWNzKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
IGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4gZGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9u
VGFza0RlbGVnYXRlPilzdHJvbmdTZXNzaW9uLmdldCgpLmRlbGVnYXRlOwogCkBAIC05OTAsNyAr
MTAyMSw3IEBAIC0gKHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjooTlNFcnJvCiAgICAgICAgIGlmIChbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVX
aXRoRXJyb3I6KV0pCiAgICAgICAgICAgICBbZGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNz
aW9uICopc3Ryb25nU2Vzc2lvbi5nZXQoKSB0YXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0
cm9uZ1NlbGYuZ2V0KCkgZGlkQ29tcGxldGVXaXRoRXJyb3I6c3Ryb25nRXJyb3IuZ2V0KCldOwog
Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb25dIHsK
KyAgICAgICAgc3Ryb25nU2VsZi0+X3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2VsZiwg
c3Ryb25nU2Vzc2lvbl0gewogICAgICAgICAgICAgW3N0cm9uZ1Nlc3Npb24gdGFza0NvbXBsZXRl
ZDpzdHJvbmdTZWxmLmdldCgpXTsKICAgICAgICAgfSk7CiAgICAgfV07CkBAIC05OTgsMTYgKzEw
MjksMTkgQEAgLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOihOU0Vycm8KIAogLSAodm9pZClyZXNvdXJjZTooUGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRo
RXJyb3I6KGNvbnN0IFJlc291cmNlRXJyb3ImKWVycm9yCiB7CisgICAgX3RhcmdldFF1ZXVlLT5h
c3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgW3NlbGYgX3Jlc291cmNlOnJlc291cmNlIGxvYWRG
aW5pc2hlZFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCkgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJp
Y3MgeyB9XTsKIH0KIAogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9yJillcnJvcgog
eworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIFtzZWxmIF9y
ZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpIG1l
dHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CiB9CiAKIC0gKHZvaWQpcmVzb3VyY2VGaW5p
c2hlZDooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBtZXRyaWNzOihjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25X
b3JrUXVldWUoKTsKICAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0
aEVycm9yOm5pbCBtZXRyaWNzOm1ldHJpY3NdOwogfQogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDcy
YTQyMmQ0YWVmZDY2NTFmZjlkY2Y3ODQzN2MwNjQyYjJlNTE3ZGIuLmU1ZTY5YWVmYjAwZjc0YjU5
ODQxNzc1NGJkMjZlOTc0MjhmZWVjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ1MSw4ICs0NTEsMTEg
QEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW90ZUF1ZGlvRGVzdGluYXRpb24KIAogUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIm
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkK
IHsKLSAgICBpZiAoIW1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIpCisgICAgQVNTRVJUKGlz
TWFpblJ1bkxvb3AoKSk7CisgICAgaWYgKCFtX3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKSB7
CiAgICAgICAgIG1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgPSBtYWtlVW5pcXVlPFJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyPigpOworICAgICAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyLT5pbml0aWFsaXplQ29ubmVjdGlvbigmY29ubmVjdGlvbigpKTsKKyAgICB9CiAKICAg
ICByZXR1cm4gKm1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5k
ZXggN2Y1MTJjNmMxMWE4ZTcxMDhjZjAwNjJiNTg0ZDI3YjU4OTA4ZDE4Zi4uNzMzOGEzZWQxM2Vi
MTNmOWZhYzc5YjA2Y2RkYjJlM2RmNzIzOWM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEs
NiBAQCBSZW1vdGVNZWRpYVJlc291cmNlOjpSZW1vdGVNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyJiByZW1vdGVNZWRpYQogCiBSZW1vdGVNZWRpYVJlc291cmNlOjp+UmVt
b3RlTWVkaWFSZXNvdXJjZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAgICAg
c3RvcCgpOwogICAgIGlmICghbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcikKICAgICAgICAg
cmV0dXJuOwpAQCAtNzIsMTIgKzcxLDEyIEBAIGJvb2wgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGlk
UGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJj
ZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9v
bCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3Vs
ZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICgh
bV9jbGllbnQpCisgICAgYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKTsKKyAgICBpZiAoIWNs
aWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNr
ID0gZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsKLSAgICBtX2NsaWVudC0+cmVzcG9uc2VSZWNl
aXZlZCgqdGhpcywgcmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBzaG91bGRD
b250aW51ZSkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAg
IGNsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChzaG91
bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpObykKICAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPnN0b3AoKTsKIApAQCAtODcsMzkgKzg2LDM5IEBAIHZvaWQgUmVtb3Rl
TWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgYm9vCiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZl
ZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVk
aXJlY3RSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQo
KSkKKyAgICAgICAgY2xpZW50LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVl
c3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc1RvQmVTZW50KQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAg
aWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGF0YVNl
bnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAogdm9pZCBSZW1v
dGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhp
cywgZGF0YSk7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAg
IGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7CiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7Ci0gICAg
aWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
KCp0aGlzLCBlcnJvcik7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisg
ICAgICAgIGNsaWVudC0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKCp0aGlzLCBlcnJvcik7CiB9
CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5sb2Fk
RmFpbGVkKCp0aGlzLCBlcnJvcik7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50
KCkpCisgICAgICAgIGNsaWVudC0+bG9hZEZhaWxlZCgqdGhpcywgZXJyb3IpOwogfQogCiB2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2U6OmxvYWRGaW5pc2hlZChjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bG9h
ZEZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5j
bGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBj
YzcwZDFjNDE2YmI5YzNjOWI1MGJiNzliMjc1YTIzYmFiOWI0MGVmLi43ZjlmZTcyODBiNTljNjRh
MzI1OWE3NTAxYjZhM2U2Yjc5YTU5NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0z
OCw2ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogUmVtb3RlTWVkaWFSZXNvdXJj
ZUxvYWRlcjo6UmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcihSZW1vdGVNZWRpYVBsYXllclByb3h5
JiByZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAgIDogbV9yZW1vdGVNZWRpYVBsYXllclByb3h5
KHJlbW90ZU1lZGlhUGxheWVyUHJveHkpCiB7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
CiB9CiAKIFJlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXI6On5SZW1vdGVNZWRpYVJlc291cmNlTG9h
ZGVyKCkKQEAgLTQ2LDYgKzQ3LDcgQEAgUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcjo6flJlbW90
ZU1lZGlhUmVzb3VyY2VMb2FkZXIoKQogCiBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBS
ZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgTG9hZE9wdGlvbnMgb3B0aW9ucykKIHsKKyAgICBBU1NFUlQoaXNNYWluUnVu
TG9vcCgpKTsKICAgICBpZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTU0LDYgKzU2LDcgQEAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNv
dXJjZT4gUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKFJlc291cmMK
IAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyOjpzZW5kSDJQaW5nKGNvbnN0IFVSTCYg
dXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFJlc291cmNlRXJy
b3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIEFTU0VSVChpc01haW5SdW5Mb29w
KCkpOwogICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0MGUzODEzYTQ4YWFiODM3MjM3NTMyOWJhYzk2
YTEyNjY3MDg3OGUyLi4zMmUxMmY1N2U0NGRlZWMzYTA1YjI0Nzk0NzZlMGZkNmJkOGRjMGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTQxLDkgKzQxLDIwIEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmKTsK
ICAgICB+UmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcigpOwogCisgICAgc3RhdGljIFJlZjxXVEY6
OldvcmtRdWV1ZT4gZGVmYXVsdFF1ZXVlKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJlZjxX
VEY6OldvcmtRdWV1ZT4+IG1lc3NhZ2VRdWV1ZTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgW10geworICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmNvbnN0cnVjdChXb3JrUXVldWU6
OmNyZWF0ZSgiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyIiwgV1RGOjpXb3JrUXVldWU6OlFP
Uzo6QmFja2dyb3VuZCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2VRdWV1
ZS5nZXQoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBMb2FkT3B0aW9ucykgZmluYWw7CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPiYmKT4mJikgZmluYWw7CisgICAgUmVmPFdURjo6V29ya1F1ZXVlPiB0YXJnZXRR
dWV1ZSgpIGZpbmFsIHsgcmV0dXJuIGRlZmF1bHRRdWV1ZSgpOyB9CiAKICAgICBXZWFrUHRyPFJl
bW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCAwMWFlYjQyNzk4ZTlhY2IxM2E5NWQ1MWViY2M2MTNj
Y2E2OTJjZDVhLi5hNWEzNzA3MWIxMGQ4OWFkODYyN2I1OTA3NDhjN2NkMDMxNmEwZTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVJlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KIApAQCAtMzgsMTIgKzM4LDI3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OlJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkKK1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpID0gZGVmYXVsdDsKK1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOjp+UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKK3Zv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewor
ICAgIC8vIFRPRE86IFdoYXQgaXMgdGhlIGJlc3QgcHJhY3RpY2UgdG8gY2FsbCB0aGlzPworICAg
IGluaXRpYWxpemVDb25uZWN0aW9uKG51bGxwdHIpOwogfQogCi1SZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlcjo6flJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkKK3ZvaWQgUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29u
bmVjdGlvbikKIHsKKyAgICBpZiAobV9jb25uZWN0aW9uID09IGNvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+
cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKworICAgIG1fY29ubmVjdGlvbiA9
IGNvbm5lY3Rpb247CisKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rp
b24tPmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgUmVtb3RlTWVkaWFSZXNvdXJjZUxv
YWRlcjo6ZGVmYXVsdFF1ZXVlKCksIHRoaXMpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOjphZGRNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVJlc291cmNlJiByZW1v
dGVNZWRpYVJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAppbmRleCAxM2I3NmU4MGE0OThj
OTQ1ZTFjNDZlOTFmZDg0Nzk4MmI1ZWQ3NDExLi5iZGNkYTcxZWQyNTBkMTI5MjQxZWViODFmYWJm
MDcxYWU5ZDhjMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgpAQCAtNTAsMTYgKzUxLDE5
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZTsKIAogY2xh
c3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIKLSAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CisgICAgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCk7CiAgICAgflJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyKCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CisKKyAgICB2b2lkIGluaXRp
YWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOwogCiAgICAgdm9pZCBhZGRNZWRpYVJl
c291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVJlc291cmNl
Jik7CiAgICAgdm9pZCByZW1vdmVNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyKTsKIAotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLy8gSVBDOjpDb25u
ZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogcHJpdmF0ZToK
QEAgLTcyLDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRGaW5pc2hlZChSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
Jik7CiAKICAgICBIYXNoTWFwPFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVN
ZWRpYVJlc291cmNlKj4gbV9yZW1vdGVNZWRpYVJlc291cmNlczsKKyAgICBSZWZQdHI8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBlYWRkODQ3MzBmMTFiNzczYjAzNTJkYmFhZmU4ZGRhY2RhODc2MDkzLi4x
OGRiOTU2NWI0NGVmMDYzYmUxM2RiYzUyMmQxNTc3MDFhNTQwZTMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0yMDEsMTUgKzIwMSwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1fY29yZUxv
YWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9u
Q29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEgb2Ygc2l6ZSAlbHUgZm9yICclcyciLCBkYXRhLnNpemUoKSwgbV9jb3JlTG9hZGVy
LT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3Vs
ZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAog
ICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9j
b3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xs
ZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5idWZmZXIoKSwgZW5jb2RlZERhdGFMZW5n
dGhdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2Nv
cmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAgICAgICAgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGFjNTQyMmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVkOTQwMTdjMGNmMTYuLjFh
NTQwZjk3NzFmYTAxYzYwZmJkNTlkOTMxM2ZkMWFlY2ZmNGUzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtODEs
NyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRf
dCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNo
UmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZv
aWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAg
ICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwo=
</data>
<flag name="commit-queue"
          id="476034"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449811</attachid>
            <date>2022-01-24 07:22:35 -0800</date>
            <delta_ts>2022-01-24 09:08:45 -0800</delta_ts>
            <desc>WIP3</desc>
            <filename>bug-235353-20220125022233.patch</filename>
            <type>text/plain</type>
            <size>87970</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyZDcxNWJjNGVmZThjOWU1ZWIxMTFl
N2MwNmViZjBmODQ4NjlmMjAuLjYwMTE4MWFjMTNjMjIzNzRlNWExZGExMTE0MDRhOGFlZWQxZmU5
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWV0YV0gUGVyZm9ybSBtZWRpYSBuZXR3b3JraW5n
IG9wZXJhdGlvbiBvZmYgdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUzNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWVCYXNlOjph
c3NlcnRJc09uV29ya1F1ZXVlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVl
dWVHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldv
cmtRdWV1ZSBjb25zdCk6CisKIDIwMjItMDEtMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgVG9sbEZyZWVCcmlkZ2luZy5oIHRvIFhjb2Rl
IHByb2plY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMjFhMTc2ZjdhM2M0YjRlYTkzOTdmZWUwNzI4ZDllYzY4OGE3
MjViOC4uZjAzYmFmOGZlNDZiZDA5MWI2NDNhZWQwMGFiZGE1NDc5OGI3N2UwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMS0xOSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIFttZXRhXSBQZXJmb3JtIG1lZGlhIG5ldHdvcmtpbmcgb3BlcmF0
aW9uIG9mZiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTM1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDIyLTAxLTE2ICBDYW1lcm9uIE1j
Q29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5zdXJlIGluIGZsaWdodCBs
YXllciB0cmFuc2FjdGlvbnMgZG9uJ3QgYWNjdW11bGF0ZSBmdXJ0aGVyIGNhbnZhcyBkcmF3aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCmluZGV4IDM2OGMwNjZkOGY5NmI0YmNlNzQzMTgyNTJlM2MwMjY2NjFkOGY2
OTcuLjY1OGRlNjk2ZjAxY2NlNTZiM2UzYjEyODRjMzg2NWEzMjNjNTM0MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1
ZS5oCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3Bh
dGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWUuZ2V0KCk7IH0KICNlbmRp
ZgogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXNzZXJ0SXNPbldvcmtRdWV1ZSgpIGNv
bnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7CiAgICAgICAg
IFNlcmlhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCBmOWY0
N2YxMWM3ODQ1ZDI3NWUxMWNmNzIwZDBhODU2MjU5Y2IyMjFjLi41MWI0YTM0NzQxMTExNDQ2ZjE0
ZDNlM2YyYzQ0NWQzOGJiYmJlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9X
b3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCkBAIC05Miw2ICs5MiwxMyBAQCB2b2lkIFdvcmtRdWV1ZUJhc2U6OnBsYXRmb3JtSW52
YWxpZGF0ZSgpCiB7CiB9CiAKK3ZvaWQgV29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpIGNvbnN0Cit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBkaXNwYXRjaF9hc3NlcnRfcXVl
dWUobV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKKyNlbmRpZgorfQorCiBXb3JrUXVldWU6OldvcmtR
dWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmIHF1ZXVlKQogICAgIDogV29ya1F1
ZXVlQmFzZShXVEZNb3ZlKHF1ZXVlKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dl
bmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtR
dWV1ZUdlbmVyaWMuY3BwCmluZGV4IGQyNTdkM2E3MjA0ZWZiMWNiM2E1ZDg5NTQ2MTBmMmIwMjdh
OGRlNTEuLjFiZWZjMjA4ZWM0NmFjYjBiNWRlZjkwMTBjNjQzNmIyOTRiYzM2MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcApAQCAtODUsNCArODUsOSBA
QCBSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3JrUXVldWUoKQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShSdW5Mb29wOjptYWluKCkpKTsKIH0KIAor
dm9pZCBXb3JrUXVldWVCYXNlOjphc3NlcnRJc09uV29ya1F1ZXVlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoJmN1cnJlbnQoKSA9PSBtX3J1bkxvb3ApOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWExN2E3MGZhNThjNzIyOGY2
Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZS4uMjY4YjgxMDkxNDMyZmJkZTU4Mjg4YTgxMGMwMDg3M2Zk
NjEyNWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmNwcApAQCAtMTgzLDIwICsxODMsMjEgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpyZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXMKICAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoIkNy
b3NzLW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVz
b3VyY2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fbG9hZGVyLT5kb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpF
cnJvciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOwogICAgICAgICBtX2RpZFBhc3NBY2Nlc3NDb250
cm9sQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9j
bGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywgUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgY29uc29sZU1lc3NhZ2Uu
Z2V0KCkpKTsKKyAgICAgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAg
ICAgICAgICBjbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywgUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgY29uc29s
ZU1lc3NhZ2UuZ2V0KCkpKTsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gbV9yZXNvdXJjZS0+b3B0aW9u
cygpLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzOwotICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRoaXMsIHJlc3BvbnNlLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoYXV0byBzaG91bGRDb250aW51ZSkgbXV0
YWJsZSB7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpIHsKKyAgICAgICAg
Y2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5k
bGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGF1dG8gc2hvdWxkQ29udGludWUpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29u
dGludWVQb2xpY3lDaGVjazo6Tm8pCiAgICAgICAgICAgICAgICAgc3RvcCgpOwogICAgICAgICB9
KTsKKyAgICB9CiAKICAgICBtX2xvYWRlci0+YWRkUmVzcG9uc2VGb3JUZXN0aW5nKHJlc3BvbnNl
KTsKIH0KQEAgLTIwNiw4ICsyMDcsOCBAQCBib29sIE1lZGlhUmVzb3VyY2U6OnNob3VsZENhY2hl
UmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZQogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJl
ZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGlmIChtX2NsaWVu
dCkKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRDYWNoZVJlc3BvbnNlKCp0aGlzLCBy
ZXNwb25zZSk7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAg
IHJldHVybiBjbGllbnQtPnNob3VsZENhY2hlUmVzcG9uc2UoKnRoaXMsIHJlc3BvbnNlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjE2LDggKzIxNyw4IEBAIHZvaWQgTWVkaWFSZXNvdXJj
ZTo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVx
dWVzdCYmCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0g
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVkaXJlY3RSZWNlaXZlZCgqdGhp
cywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50
LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CkBAIC0yMjcsOCArMjI4LDggQEAgdm9pZCBNZWRp
YVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1MKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhp
cywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIGlmIChhdXRvIGNsaWVudCA9
IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1Nl
bnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCkBAIC0yMzYsOCArMjM3LDggQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGIKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQ
dHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CisgICAgaWYg
KGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGF0YVJlY2Vp
dmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQpAQCAtMjQ1LDExICsyNDYsMTEgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWUKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAg
ICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAobV9j
bGllbnQpIHsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkgewogICAgICAg
ICBpZiAobV9yZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkKLSAgICAgICAgICAgIG1f
Y2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBtX3Jlc291cmNlLT5yZXNvdXJjZUVycm9yKCkpOwor
ICAgICAgICAgICAgY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBtX3Jlc291cmNlLT5yZXNvdXJj
ZUVycm9yKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlz
aGVkKCp0aGlzLCBtZXRyaWNzKTsKKyAgICAgICAgICAgIGNsaWVudC0+bG9hZEZpbmlzaGVkKCp0
aGlzLCBtZXRyaWNzKTsKICAgICB9CiAgICAgc3RvcCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaAppbmRleCBjOTU4Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzLi43
MTlmNzhiYjliZWIxOTgyMTZmYjNkMmM0ZjRkNDY5NDI0YTlmMDQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaApAQCAtMzEsMTAgKzMxLDEyIEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV29y
a1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsMTAgKzQ1LDExIEBAIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogCi1jbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgOiBwdWJsaWMg
UmVmQ291bnRlZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IHsKK2NsYXNzIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUNsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKKyAgICAvLyBUaG9zZSBtZXRob2RzIG11
c3QgYmUgY2FsbGVkIG9uIFBsYXRmb3JtTWVkaWFSZXNvdXJjZTo6dGFyZ2V0UXVldWUoKQogICAg
IHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRp
bnVlUG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNw
b25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtNjgsOSArNzEsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBS
ZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1
ZXN0JiYsIExvYWRPcHRpb25zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbmRIMlBpbmcoY29u
c3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJj
ZUVycm9yPiYmKT4mJikgPSAwOwogCisgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFk
cy4gUmV0dXJuIHRoZSBXb3JrUXVldWUgb24gd2hpY2ggdGhlIFBsYWZ0b3JtTWVkaWFSZXNvdXJj
ZSBhbmQgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IG11c3QgYmUgYmUgY2FsbGVkIG9uLgor
ICAgIHZpcnR1YWwgUmVmPFdURjo6V29ya1F1ZXVlPiB0YXJnZXRRdWV1ZSgpIHsgcmV0dXJuIFdU
Rjo6V29ya1F1ZXVlOjptYWluKCk7IH0KKyAgICAvLyByZXF1ZXN0UmVzb3VyY2Ugd2lsbCBiZSBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLCB0aGUgUGxhdGZvcm1NZWRpYVJlc291cmNlIG9iamVj
dCBpcyB0byBiZSB1c2VkIG9uIHRhcmdldFF1ZXVlKCkuCisgICAgdmlydHVhbCBSZWZQdHI8UGxh
dGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYsIExv
YWRPcHRpb25zKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIoKSA9IGRlZmF1bHQ7CiB9OwpAQCAtODMsMTEgKzkwLDIwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBkaWRQYXNzQWNjZXNzQ29u
dHJvbENoZWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgc2V0Q2xpZW50
KFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+JiYgY2xpZW50KSB7IG1fY2xpZW50
ID0gV1RGTW92ZShjbGllbnQpOyB9Ci0gICAgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50KiBj
bGllbnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4gbV9jbGllbnQ7CisgICAgdm9pZCBzZXRD
bGllbnQoUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4mJiBjbGllbnQpCisgICAg
eworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgIG1fY2xpZW50ID0g
V1RGTW92ZShjbGllbnQpOworICAgIH0KKyAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNl
Q2xpZW50PiBjbGllbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OworICAgICAgICByZXR1cm4gbV9jbGllbnQ7CisgICAgfQorCitwcml2YXRlOgorICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IG1fY2xpZW50IFdURl9HVUFSREVE
X0JZX0xPQ0sobV9sb2NrKTsKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDk1YTM3ODlhZDYyNzE5
YzEwMGJjMDY3ZDNjZThhYWE5MzJkNTc0MTEuLjVkNWFiMTlkNmQ5ODEyM2YxZDliMTg3MTY5ODQy
MWVkOTU5Y2ZiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogT0JKQ19D
TEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIEFWQXNzZXRUcmFjazsKQEAg
LTQ2OCw2ICs0NjksNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxOU1Rp
bWVJbnRlcnZhbD4gbV9jYWNoZWRMaXZlVXBkYXRlSW50ZXJ2YWw7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPE9ic2VydmVyPHZvaWQoKT4+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxPYnNlcnZlcjx2b2lkKCk+PiBtX3dhaXRGb3JWaWRlb091dHB1dE1l
ZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcjsKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fdGFy
Z2V0UXVldWUgeyBXVEY6OldvcmtRdWV1ZTo6bWFpbigpIH07CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCBiZGMyYTgyZTczZjRmZGY4OGI1YTU0Yzk5N2YzMmJmNjg5ZGU5OTZh
Li5hNmNjYzY4MmYzNGZmY2FjYjI0ODliNmZhZWQ5MjZkODcyZmZkZjAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbAog
ICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmJhc2VVUkwgZXJyb3I6bmlsXTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIE5TQXJyYXkgKnByb3BlcnR5S2V5
cyA9IEBbTlNVUkxOYW1lS2V5LCBOU1VSTENvbnRlbnRNb2RpZmljYXRpb25EYXRlS2V5LCBOU1VS
TElzUmVndWxhckZpbGVLZXldOwogICAgIE5TRGlyZWN0b3J5RW51bWVyYXRvciAqZW51bWVyYXRv
ciA9IFtmaWxlTWFuYWdlciBlbnVtZXJhdG9yQXRVUkw6YmFzZVVSTCBpbmNsdWRpbmdQcm9wZXJ0
aWVzRm9yS2V5czoKICAgICAgICAgcHJvcGVydHlLZXlzIG9wdGlvbnM6TlNEaXJlY3RvcnlFbnVt
ZXJhdGlvblNraXBzU3ViZGlyZWN0b3J5RGVzY2VuZGFudHMKQEAgLTQ0Nyw4ICs0NDcsMTEgQEAg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMoKQogCiAgICAgW1ttX2F2QXNzZXQgcmVzb3VyY2VMb2FkZXJdIHNldERl
bGVnYXRlOm5pbCBxdWV1ZTowXTsKIAotICAgIGZvciAoYXV0byYgcGFpciA6IG1fcmVzb3VyY2VM
b2FkZXJNYXApCi0gICAgICAgIHBhaXIudmFsdWUtPmludmFsaWRhdGUoKTsKKyAgICBmb3IgKGF1
dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVyTWFwKSB7CisgICAgICAgIG1fdGFyZ2V0UXVldWUt
PmRpc3BhdGNoKFtsb2FkZXIgPSBwYWlyLnZhbHVlXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGxvYWRlci0+aW52YWxpZGF0ZSgpOworICAgICAgICB9KTsKKyAgICB9CiAKICAgICBpZiAobV92
aWRlb091dHB1dCkKICAgICAgICAgbV92aWRlb091dHB1dC0+aW52YWxpZGF0ZSgpOwpAQCAtOTY5
LDcgKzk3Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3Jl
YXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwgUmV0CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9hdkFzc2V0Lmdl
dCgpLnJlc291cmNlTG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VM
b2FkZXIgPSBbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBbcmVzb3VyY2VMb2FkZXIg
c2V0RGVsZWdhdGU6bV9sb2FkZXJEZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxMb2FkZXJEZWxl
Z2F0ZVF1ZXVlKCldOwogCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNBVkZv
dW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkKQEAgLTk3Nyw4ICs5ODAsMTAgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNv
bnN0IFVSTCYgdXJsLCBSZXQKICAgICAgICAgJiYgW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSldCiAgICAgICAgICYmIFty
ZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb25EYXRh
RGVsZWdhdGVRdWV1ZSldKSB7CiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXI+IG1lZGlhUmVzb3VyY2VMb2FkZXIgPSBwbGF5ZXIoKS0+Y3JlYXRlUmVzb3VyY2VMb2Fk
ZXIoKTsKLSAgICAgICAgaWYgKG1lZGlhUmVzb3VyY2VMb2FkZXIpCisgICAgICAgIGlmIChtZWRp
YVJlc291cmNlTG9hZGVyKSB7CisgICAgICAgICAgICBtX3RhcmdldFF1ZXVlID0gbWVkaWFSZXNv
dXJjZUxvYWRlci0+dGFyZ2V0UXVldWUoKTsKICAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLlVS
TFNlc3Npb24gPSAoTlNVUkxTZXNzaW9uICopYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb24g
YWxsb2NdIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6Km1lZGlhUmVzb3VyY2VMb2FkZXIgZGVsZWdh
dGU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOnJl
c291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGVRdWV1ZV0pLmdldCgpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBh
ZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3IoY2hhcHRl
ck1ldGFkYXRhRGlkQ2hhbmdlOikgbmFtZTpBVkFzc2V0Q2hhcHRlck1ldGFkYXRhR3JvdXBzRGlk
Q2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDptX2F2QXNzZXQuZ2V0KCldOwpAQCAtMjA2NywyNSAr
MjA3MiwzNCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogI2VuZGlmCiAjZW5kaWYKIAotICAg
IGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0
aGlzLCBhdlJlcXVlc3QpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QsIG1fdGFyZ2V0UXVldWUpOwogICAg
IG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCBy
ZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExvYWRp
bmcoKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCiB7Ci0gICAgU3RyaW5nIHNjaGVtZSA9IFtbW2F2UmVx
dWVzdCByZXF1ZXN0XSBVUkxdIHNjaGVtZV07CisgICAgUmVmUHRyIHJlc291cmNlTG9hZGVyID0g
bV9yZXNvdXJjZUxvYWRlck1hcC5nZXQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QpOwog
Ci0gICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3Vy
Y2VMb2FkZXJNYXAuZ2V0KChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKLQotICAgIGlm
IChyZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmVzb3VyY2VMb2FkZXItPnN0b3BMb2FkaW5nKCk7
CisgICAgaWYgKHJlc291cmNlTG9hZGVyKSB7CisgICAgICAgIG1fdGFyZ2V0UXVldWUtPmRpc3Bh
dGNoKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLT5zdG9wTG9hZGluZygpOworICAgICAgICB9
KTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJl
cXVlc3QpCiB7CisgICAgUmVmUHRyIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlck1h
cC5nZXQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QpOwogICAgIG1fcmVzb3VyY2VMb2Fk
ZXJNYXAucmVtb3ZlKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKKworICAgIGlmIChy
ZXNvdXJjZUxvYWRlcikgeworICAgICAgICBtX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbcmVzb3Vy
Y2VMb2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICByZXNvdXJjZUxvYWRlci0+aW52YWxpZGF0ZSgpOworICAgICAgICB9KTsKKyAgICB9CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNBdmFpbGFibGUo
KQpAQCAtMjQ2Miw3ICsyNDc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpyZXNvbHZlZFVSTENoYW5nZWQoKQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdAogewotICAgIEFW
QXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VMb2FkZXIgPSBtX2F2QXNzZXQuZ2V0KCkucmVz
b3VyY2VMb2FkZXI7CisgICAgQVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJjZUxvYWRlciA9
IFttX2F2QXNzZXQgcmVzb3VyY2VMb2FkZXJdOwogICAgIGlmICghRGVwcmVjYXRlZEdsb2JhbFNl
dHRpbmdzOjppc0FWRm91bmRhdGlvbk5TVVJMU2Vzc2lvbkVuYWJsZWQoKQogICAgICAgICB8fCAh
W3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbild
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDc2LDcgKzI0OTAsNyBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBj
b25zdAogCiBzdGQ6Om9wdGlvbmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29u
c3QKIHsKLSAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9hdkFz
c2V0LmdldCgpLnJlc291cmNlTG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVz
b3VyY2VMb2FkZXIgPSBbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBpZiAoIURlcHJl
Y2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNBVkZvdW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkK
ICAgICAgICAgfHwgIVtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KFVSTFNlc3Npb24pXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwZWZlZWFlZjViMmQ3
MWJjNmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJjLi5mNWM2OTBjY2NiY2QzYjA3Y2ZjZTViNDdkYmE4
NzVkOGYwMmI1MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaApAQCAtMzUsNiArMzUsMTAgQEAKIAogT0JKQ19DTEFTUyBBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdDsKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBXb3JrUXVl
dWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VNZWRp
YUxvYWRlcjsKQEAgLTQ1LDEwICs0OSwxMCBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKLWNsYXNz
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcj4geworY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50
LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqLCBXVEY6OldvcmtR
dWV1ZSYpOwogICAgIHZpcnR1YWwgfldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcigpOwogCiAgICAg
dm9pZCBzdGFydExvYWRpbmcoKTsKQEAgLTU2LDIzICs2MCwyNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbnZhbGlkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3QgKik7CisgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3QqLCBXVEY6OldvcmtRdWV1ZSYpOwogCiAgICAgZnJpZW5kIGNsYXNzIENhY2hl
ZFJlc291cmNlTWVkaWFMb2FkZXI7CiAgICAgZnJpZW5kIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1l
ZGlhTG9hZGVyOwogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI7
CiAKLSAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIC8vIFJldHVybiB0cnVlIGlmIHN0b3BMb2FkaW5nKCkgZ290IGNhbGxlZCwgaW5kaWNhdGlu
ZyB0aGF0IG5vIGZ1cnRoZXIgcHJvY2Vzc2luZyBzaG91bGQgb2NjdXIuCisgICAgYm9vbCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBib29sIG5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisKICAg
ICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZp
bmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyogbV9wYXJlbnQ7CisgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDPiBtX3BhcmVudDsgLy8gT25seSBldmVyIGRlcmVmZXJlbmNlZCBvbiB0aGUgbWFp
biB0aHJlYWQuCiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBt
X2F2UmVxdWVzdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXI+IG1fZGF0YVVSTE1lZGlhTG9hZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRSZXNv
dXJjZU1lZGlhTG9hZGVyPiBtX3Jlc291cmNlTWVkaWFMb2FkZXI7Ci0gICAgV2Vha1B0cjxQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IG1fcGxhdGZvcm1NZWRpYUxvYWRlcjsKKyAgICBSZWZQ
dHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBtX3BsYXRmb3JtTWVkaWFMb2FkZXI7CiAg
ICAgc2l6ZV90IG1fcmVzcG9uc2VPZmZzZXQgeyAwIH07CisgICAgUmVmPFdURjo6V29ya1F1ZXVl
PiBtX3RhcmdldFF1ZXVlOworICAgIGJvb2wgbV9pbnZhbGlkYXRlZCB7IGZhbHNlIH07CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KaW5kZXggNGI1OTRmZmY4ZDZmNGY3MWM3NmQwNTZlYmExMjhmODU4MDdkYjRiNC4uZDYx
NGQxYTA5YzYyNmM4OGNiOWQwYmQwZGU4MDBiZmRlODVkN2YzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNDAsNiArNDAs
NyBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRSZXNvdXJjZUxvYWRlci5oPgogI2lt
cG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBv
cnQgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogQGlu
dGVyZmFjZSBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCAo
V2ViS2l0RXh0ZW5zaW9ucykKQEAgLTEzNywxMSArMTM4LDExIEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgU2hhCiAgICAgICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqZGF0
YSk7CiB9CiAKLWNsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlciBmaW5hbCA6IHB1Ymxp
YyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IHsKK2NsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBXZWFrUHRyPFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gY3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYs
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYsIFJlc291cmNlUmVxdWVzdCYmKTsKLSAgICB+
UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyKCkgeyBzdG9wKCk7IH0KKyAgICBzdGF0aWMgUmVm
UHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gY3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlciYsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYsIFJlc291cmNlUmVxdWVzdCYm
KTsKKyAgICB+UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyKCkgPSBkZWZhdWx0OwogCiAgICAg
dm9pZCBzdG9wKCk7CiAKQEAgLTE2Miw2MiArMTYzLDczIEBAIHByaXZhdGU6CiAgICAgdm9pZCBs
b2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAgICAgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJiBtX3BhcmVudDsKKyAgICBjb25zdCBXVEY6OldvcmtRdWV1ZSYgbV90YXJnZXRRdWV1
ZTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwogICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCi1XZWFrUHRyPFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorUmVmUHRyPFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIGF1dG8gcmVzb3VyY2Ug
PSBsb2FkZXIucmVxdWVzdFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAoIXJl
c291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvKiByZXNvdXJjZVBvaW50
ZXIgPSByZXNvdXJjZS5nZXQoKTsKICAgICBhdXRvIGNsaWVudCA9IGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyIHsgcGFyZW50LCByZXNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpIH0pOwotICAgIFdlYWtQdHIgcmVzdWx0ID0gY2xpZW50OwotCi0gICAgcmVzb3VyY2VQb2lu
dGVyLT5zZXRDbGllbnQoV1RGTW92ZShjbGllbnQpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJlc291cmNlUG9pbnRlci0+c2V0Q2xpZW50KGNsaWVudC5jb3B5UmVmKCkpOworICAgIHJldHVy
biBjbGllbnQ7CiB9CiAKIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6UGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZWY8UGxh
dGZvcm1NZWRpYVJlc291cmNlPiYmIHJlc291cmNlKQogICAgIDogbV9wYXJlbnQocGFyZW50KQor
ICAgICwgbV90YXJnZXRRdWV1ZShwYXJlbnQubV90YXJnZXRRdWV1ZSkKICAgICAsIG1fcmVzb3Vy
Y2UoV1RGTW92ZShyZXNvdXJjZSkpCiB7CiB9CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpzdG9wKCkKIHsKKyAgICBtX3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVldWUo
KTsKKwogICAgIGlmICghbV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBy
ZXNvdXJjZSA9IFdURk1vdmUobV9yZXNvdXJjZSk7Ci0gICAgcmVzb3VyY2UtPnN0b3AoKTsKLSAg
ICByZXNvdXJjZS0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jl
c291cmNlID0gV1RGTW92ZShtX3Jlc291cmNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHJlc291
cmNlLT5zdG9wKCk7CisgICAgICAgIHJlc291cmNlLT5zZXRDbGllbnQobnVsbHB0cik7CisgICAg
fSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpyZXNwb25zZVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fdGFyZ2V0UXVldWUuYXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOworCiAgICAgbV9wYXJlbnQucmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKIH0KIAog
dm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CisgICAgbV90YXJnZXRRdWV1ZS5hc3NlcnRJc09uV29ya1F1ZXVl
KCk7CisKICAgICBtX3BhcmVudC5sb2FkRmFpbGVkKGVycm9yKTsKIH0KIAogdm9pZCBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiB7CisgICAgbV90YXJnZXRRdWV1
ZS5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsK
IH0KIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBt
X3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIG1fYnVmZmVyLmFwcGVu
ZChidWZmZXIpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9i
dWZmZXIuZ2V0KCkpOwogfQogCi1jbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4geworY2xhc3Mg
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlciYsIFJlc291cmNlUmVxdWVzdCYmKTsKQEAgLTIzOCw0NiArMjUwLDQ1IEBAIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImCiAgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgbV9wYXJlbnQubV90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBh
cmVudCA9IFJlZiB7IG1fcGFyZW50IH1dIHsKKyAgICAgICAgaWYgKG1fcGFyZW50Lm1fZGF0YVVS
TE1lZGlhTG9hZGVyLmdldCgpICE9IHRoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKCFtX2J1ZmZlciB8fCBtX3Jlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBt
X3BhcmVudC5sb2FkRmFpbGVkKFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2Vu
ZXJhbCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fcGFyZW50
LnJlc3BvbnNlUmVjZWl2ZWQobV9yZXNwb25zZSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgIGlmIChtX3BhcmVudC5yZXNwb25zZVJlY2VpdmVkKG1fcmVzcG9uc2UpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcigqbV9idWZmZXIpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICBpZiAobV9w
YXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcikpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiAgICAgfSk7CiB9
CiAKLVJlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZB
c3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1JlZjxXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3QgKmF2UmVxdWVzdCwgV1RGOjpXb3JrUXVldWUmIHRhcmdldFF1ZXVlKQogewogICAgIEFT
U0VSVChhdlJlcXVlc3QpOwogICAgIEFTU0VSVChwYXJlbnQpOwotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2
UmVxdWVzdCwgdGFyZ2V0UXVldWUpKTsKIH0KIAotV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqYXZSZXF1ZXN0KQorV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdCAqYXZSZXF1ZXN0LCBXVEY6OldvcmtRdWV1ZSYgdGFyZ2V0UXVldWUpCiAgICAgOiBt
X3BhcmVudChwYXJlbnQpCiAgICAgLCBtX2F2UmVxdWVzdChhdlJlcXVlc3QpCisgICAgLCBtX3Rh
cmdldFF1ZXVlKHRhcmdldFF1ZXVlKQogewogfQogCiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
On5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKQogewotICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAK
IHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogeworICAgIC8v
IENhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCwgYmVmb3JlIGFueSBsb2FkZXJzIGFyZSBjcmVh
dGVkLgogICAgIGlmIChtX2RhdGFVUkxNZWRpYUxvYWRlciB8fCBtX3Jlc291cmNlTWVkaWFMb2Fk
ZXIgfHwgbV9wbGF0Zm9ybU1lZGlhTG9hZGVyIHx8ICFtX3BhcmVudCkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zMTMsOCArMzI0LDExIEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpz
dGFydExvYWRpbmcoKQogICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nV2l0aEVycm9yOjBd
OwogfQogCisvLyBObyBjb2RlIGFjY2Vzc2luZyBgdGhpc2Agc2hvdWxkIGV2ZXIgYmUgdXNlZCBh
ZnRlciBjYWxsaW5nIHN0b3BMb2FkaW5nKCkuCiB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjo6c3RvcExvYWRpbmcoKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVl
dWUoKTsKKwogICAgIG1fZGF0YVVSTE1lZGlhTG9hZGVyID0gbnVsbHB0cjsKICAgICBtX3Jlc291
cmNlTWVkaWFMb2FkZXIgPSBudWxscHRyOwogCkBAIC0zMjIsMjggKzMzNiwzNCBAQCB2b2lkIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgICAgICBtX3BsYXRmb3Jt
TWVkaWFMb2FkZXItPnN0b3AoKTsKICAgICAgICAgbV9wbGF0Zm9ybU1lZGlhTG9hZGVyID0gbnVs
bHB0cjsKICAgICB9Ci0gICAgaWYgKG1fcGFyZW50ICYmIG1fYXZSZXF1ZXN0KQotICAgICAgICBt
X3BhcmVudC0+ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KG1fYXZSZXF1ZXN0LmdldCgpKTsKKyAgICBp
ZiAobV9hdlJlcXVlc3QpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0gbV9w
YXJlbnQsIGludmFsaWRhdGVkID0gbV9pbnZhbGlkYXRlZCwgYXZSZXF1ZXN0ID0gV1RGTW92ZSht
X2F2UmVxdWVzdCldICgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFpbnZhbGlkYXRlZCAm
JiBwYXJlbnQpCisgICAgICAgICAgICAgICAgcGFyZW50LT5kaWRTdG9wTG9hZGluZ1JlcXVlc3Qo
YXZSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgaWYgKCFtX3BhcmVudCkKLSAg
ICAgICAgcmV0dXJuOworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsK
IAorICAgIGlmIChtX2ludmFsaWRhdGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9pbnZhbGlk
YXRlZCA9IHRydWU7CiAgICAgbV9wYXJlbnQgPSBudWxscHRyOworICAgIHN0b3BMb2FkaW5nKCk7
CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnN0b3BMb2FkaW5nKCk7Ci0gICAg
fSk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorYm9vbCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAgICAg
aW50IHN0YXR1cyA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CiAgICAgaWYgKHN0YXR1cyAm
JiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+IDI5OSkpIHsKICAgICAgICAgW21fYXZSZXF1ZXN0
IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6MF07Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCiAgICAgYXV0byYgY29udGVudFJhbmdlID0gcmVzcG9uc2UuY29u
dGVudFJhbmdlKCk7CkBAIC0zNjgsMTIgKzM4OCwxNiBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZQogICAgICAgICBpZiAoIVttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF0pIHsKICAgICAgICAgICAg
IFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKICAgICAgICAgICAgIHN0b3BMb2FkaW5nKCk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmFpbGVkKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElz
T25Xb3JrUXVldWUoKTsKKwogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMzk4NzQxNz4gU2V0IHRo
ZSBjb250ZW50VHlwZSBvZiB0aGUgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdCB0byBhbiBlbXB0
eQogICAgIC8vIHN0cmluZyB0byB0cmlnZ2VyIEFWQXNzZXQncyBwbGF5YWJsZSB2YWx1ZSB0byBj
b21wbGV0ZSBsb2FkaW5nLgogICAgIGlmIChbbV9hdlJlcXVlc3QgY29udGVudEluZm9ybWF0aW9u
UmVxdWVzdF0gJiYgIVtbbV9hdlJlcXVlc3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0gY29u
dGVudFR5cGVdKQpAQCAtMzg1LDE1ICs0MDksMTkgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXI6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogeworICAgIG1fdGFyZ2V0UXVl
dWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2Fk
aW5nXTsKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEpCitib29sIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Cisg
ICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAgICAgQVZBc3NldFJl
c291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRh
UmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGZvciBwb3NzaWJsZSB1bnNpZ25lZCBvdmVy
Zmxvdy4KICAgICBBU1NFUlQoZGF0YVJlcXVlc3QuY3VycmVudE9mZnNldCA+PSBkYXRhUmVxdWVz
dC5yZXF1ZXN0ZWRPZmZzZXQpOwpAQCAtNDI3LDEyICs0NTUsMTQgQEAgdm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmUKIAogICAgIC8vIFRoZXJlIHdhcyBub3QgZW5vdWdoIGRhdGEgaW4gdGhlIGJ1ZmZl
ciB0byBzYXRpc2Z5IHRoZSBkYXRhIHJlcXVlc3QuCiAgICAgaWYgKHJlbWFpbmluZ0xlbmd0aCkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZGF0YVJl
cXVlc3QuY3VycmVudE9mZnNldCArIGRhdGFSZXF1ZXN0LnJlcXVlc3RlZExlbmd0aCA+PSBkYXRh
UmVxdWVzdC5yZXF1ZXN0ZWRPZmZzZXQpIHsKICAgICAgICAgW21fYXZSZXF1ZXN0IGZpbmlzaExv
YWRpbmddOwogICAgICAgICBzdG9wTG9hZGluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGI3YjA3ZmYxNDU0ZDU2MWEzMDIxMDhhZTMyMjkxZThm
ODM0MzdiZDkuLmYzODUxN2JkMzEzMWU4MTc1MzQwMTQ0MmFjNDE4MTFiMmI5YWUzMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0xMTgxLDcgKzEx
ODEsOCBAQCBib29sIHdlYktpdFNyY1dvdWxkVGFpbnRPcmlnaW4oV2ViS2l0V2ViU3JjKiBzcmMs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgRGF0YU11dGV4TG9ja2VyIG1l
bWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogCi0gICAgYXV0byogY2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQgPSByZWludGVycHJldF9jYXN0PENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50Kj4obWVtYmVycy0+cmVzb3VyY2UtPmNsaWVudCgpKTsKKyAgICBhdXRvIGNsaWVu
dCA9IG1lbWJlcnMtPnJlc291cmNlLT5jbGllbnQoKTsKKyAgICBhdXRvKiBjYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudCA9IHN0YXRpY19jYXN0PENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50Kj4oY2xpZW50LmdldCgpKTsKICAgICBmb3IgKGF1dG8mIHJlc3BvbnNlT3JpZ2luIDogY2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQtPnNlY3VyaXR5T3JpZ2lucygpKSB7CiAgICAgICAg
IGlmICghb3JpZ2luLmlzU2FtZU9yaWdpbkRvbWFpbigqcmVzcG9uc2VPcmlnaW4pKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oCmluZGV4IDAwYzIw
MDAyNTE1OTkxYWMwZGQ0ZWQzMDkxM2IyMmRkYzY4YWNlNmYuLjg0ZjEzZjIxZjJhMWIxYzE2YjNm
MjFiYWNhMTIwNTEwNzM1MmQzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkxIYXNo
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTMyLDYgKzMzLDkgQEAKIE9CSkNfQ0xB
U1MgTlNVUkxSZXF1ZXN0OwogT0JKQ19DTEFTUyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s7
CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgV29ya1F1ZXVlOworfQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgUGFyc2VkUmVxdWVzdFJhbmdlOwpAQCAtNDAsNyArNDQsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogCiBjbGFzcyBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJhbmdlUmVzcG9uc2VHZW5lcmF0b3IsIFdURjo6RGVz
dHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yKTsgfQorICAgIHN0YXRpYyBSZWY8UmFuZ2VSZXNwb25zZUdlbmVyYXRvcj4gY3JlYXRlKFdU
Rjo6V29ya1F1ZXVlJiB0YXJnZXRRdWV1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yKHRhcmdldFF1ZXVlKSk7IH0KICAgICB+UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcigpOwogCiAgICAgYm9vbCB3aWxsU3ludGhlc2l6ZVJhbmdlUmVzcG9uc2VzKFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayAqLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CkBAIC00OCw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92
ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopOwogCiBwcml2YXRlOgotICAgIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3IoKTsKKyAgICBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yKFdURjo6
V29ya1F1ZXVlJik7CiAKICAgICBzdHJ1Y3QgRGF0YTsKICAgICBjbGFzcyBNZWRpYVJlc291cmNl
Q2xpZW50OwpAQCAtNTcsNiArNjEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29uc3QgRGF0YSYpOwog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxEYXRhPj4gbV9tYXA7CisgICAg
UmVmPFdURjo6V29ya1F1ZXVlPiBtX3RhcmdldFF1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDE5ODE0YTM2NWM5ZjY2
MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQuLjg3ZmIxYzMyOGUxYjJiNzMxYjg4MjkxODk3NGEx
NjJkOGJmNTkxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTYyLDE5ICs2
MiwxNSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgUmVmUHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CiB9OwogCi1SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yKCkKK1JhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoV1RGOjpXb3JrUXVldWUmIHRhcmdldFF1ZXVlKQorICAg
IDogbV90YXJnZXRRdWV1ZSh0YXJnZXRRdWV1ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogfQogCi1SYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjp+UmFuZ2VSZXNwb25zZUdlbmVyYXRv
cigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLX0KK1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6On5SYW5nZVJlc3BvbnNlR2VuZXJhdG9yKCkgPSBkZWZhdWx0OwogCiBzdGF0aWMgUmVz
b3VyY2VSZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNlRm9yUmFuZ2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgb3JpZ2luYWxSZXNwb25zZSwgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiBwYXJz
ZWRSZXF1ZXN0UmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB0b3RhbENvbnRlbnRMZW5ndGgp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIGJlZ2luID0gcGFyc2Vk
UmVxdWVzdFJhbmdlLmJlZ2luOwogICAgIGF1dG8gZW5kID0gcGFyc2VkUmVxdWVzdFJhbmdlLmVu
ZDsKIApAQCAtOTUsNyArOTEsNyBAQCBzdGF0aWMgUmVzb3VyY2VSZXNwb25zZSBzeW50aGVzaXpl
ZFJlc3BvbnNlRm9yUmFuZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgb3JpZwogCiB2b2lkIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrICp0YXNrKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV90YXJnZXRR
dWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIGF1dG8qIGRhdGEgPSBtX21hcC5nZXQo
dGFzay5vcmlnaW5hbFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKQEAgLTEwNCw4ICsxMDAsNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQog
CiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQ
YXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRD
b250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0KKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAg
YXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXpl
IDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKQEAgLTExNSw4ICsxMTAsOCBAQCB2b2lk
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdl
UmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1
ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVy
YXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwg
YnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2Vu
ZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRhcmdldFF1ZXVlID0gbV90YXJnZXRRdWV1ZV0g
eworICAgICAgICB0YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgICAgICBp
ZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGlmICghdGFza0RhdGEpCkBAIC0xMzYsMTcgKzEzMSwxNSBA
QCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICB9CiAgICAgICAgIGlmIChieXRlSW5k
ZXggPj0gcmFuZ2UuZW5kKSB7CiAgICAgICAgICAgICBbdGFzayByZXNvdXJjZUZpbmlzaGVkOm51
bGxwdHIgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9XTsKLSAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2dlbmVyYXRvciwgdGFza10gewotICAgICAgICAgICAgICAgIGlmIChnZW5l
cmF0b3IpCi0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVtb3ZlVGFzayh0YXNrLmdl
dCgpKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvcikKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnJlbW92ZVRhc2sodGFzay5nZXQoKSk7CiAgICAgICAgIH0K
ICAgICB9OwogCiAgICAgc3dpdGNoICh0YXNrRGF0YS0+cmVzcG9uc2VTdGF0ZSkgewogICAgIGNh
c2UgRGF0YTo6VGFza0RhdGE6OlJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0OiB7CiAg
ICAgICAgIGF1dG8gcmVzcG9uc2UgPSBzeW50aGVzaXplZFJlc3BvbnNlRm9yUmFuZ2UoZGF0YS5v
cmlnaW5hbFJlc3BvbnNlLCByYW5nZSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKLSAgICAgICAg
W3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZFJlc3BvbnNlOnJlc3BvbnNlIGNvbXBsZXRp
b25IYW5kbGVyOltnaXZlQnl0ZXNUb1Rhc2sgPSBXVEZNb3ZlKGdpdmVCeXRlc1RvVGFzayksIHRh
c2tEYXRhID0gV2Vha1B0ciB7IHRhc2tEYXRhIH0sIHRhc2sgPSByZXRhaW5QdHIodGFzayldIChX
ZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIHNob3VsZENvbnRpbnVlKSB7CisgICAg
ICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWRSZXNwb25zZTpyZXNwb25zZSBjb21w
bGV0aW9uSGFuZGxlcjpbZ2l2ZUJ5dGVzVG9UYXNrID0gV1RGTW92ZShnaXZlQnl0ZXNUb1Rhc2sp
LCB0YXNrRGF0YSA9IFdlYWtQdHIgeyB0YXNrRGF0YSB9LCB0YXNrID0gcmV0YWluUHRyKHRhc2sp
XSAoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayBzaG91bGRDb250aW51ZSkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAodGFza0RhdGEpCiAgICAgICAgICAgICAgICAgdGFza0Rh
dGEtPnJlc3BvbnNlU3RhdGUgPSBEYXRhOjpUYXNrRGF0YTo6UmVzcG9uc2VTdGF0ZTo6U2Vzc2lv
bkNhbGxlZENvbXBsZXRpb25IYW5kbGVyOwogICAgICAgICAgICAgaWYgKHNob3VsZENvbnRpbnVl
ID09IFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6OlllcykKQEAgLTE2Nyw3ICsxNjAsNiBAQCB2
b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJh
bmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogCiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29uc3QgRGF0YSYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nl
c3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRp
bmc6OlllcykKICAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIApAQCAtMTgwLDcg
KzE3Miw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpl
eHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiAKIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcyhEYXRhJiBkYXRh
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNz
ZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoZGF0YSk7CiAKICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBkYXRhLnRhc2tEYXRhKQpAQCAtMTg5LDcgKzE4MSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcyhEYXRhJiBkYXRh
KQogCiBib29sIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OndpbGxIYW5kbGVSZXF1ZXN0KFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNP
bldvcmtRdWV1ZSgpOwogICAgIGF1dG8qIGRhdGEgPSBtX21hcC5nZXQocmVxdWVzdC5VUkwuYWJz
b2x1dGVTdHJpbmcpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjM0LDEzICsyMjYsMTEgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25z
ZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgZmluYWwKICAgICB7Ci0gICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0
KG1fdXJsU3RyaW5nKTsKQEAgLTI1Miw3ICsyNDIsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBs
b2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSBmaW5hbAogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAg
ICAgaWYgKCFtX2dlbmVyYXRvcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBk
YXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLnRha2UobV91cmxTdHJpbmcpOwpAQCAtMjY0LDcgKzI1
Myw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbAogICAgIHsKLSAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgUmVmUHRyIGdlbmVyYXRvciB7IG1fZ2Vu
ZXJhdG9yLmdldCgpIH07CiAgICAgICAgIGlmICghZ2VuZXJhdG9yKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjgyLDcgKzI3MCw3IEBAIHByaXZhdGU6CiAKIGJvb2wgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6d2lsbFN5bnRoZXNpemVSYW5nZVJlc3BvbnNlcyhXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKnRhc2ssIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIE5TVVJMUmVx
dWVzdCAqb3JpZ2luYWxSZXF1ZXN0ID0gdGFzay5vcmlnaW5hbFJlcXVlc3Q7CiAgICAgaWYgKCFv
cmlnaW5hbFJlcXVlc3QuVVJMKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCmluZGV4IGVhNGE5YmYyOTc4MjllYmQwMjkxNDc2Y2JmOGE3ZTU0OTQ3MjEyNmQuLjdl
YzM0OTU4ZTU1MWEzYzRmN2JiNzk5ZWIyMTRjOTczN2ExNWYwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
LmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdpbi5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VS
TFNlc3Npb24uaD4KKyNpbXBvcnQgPHd0Zi9BdG9taWNzLmg+CiAjaW1wb3J0IDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTG9j
ay5oPgpAQCAtNTAsMTIgKzUxLDE0IEBAIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xp
ZW50OwogZW51bSBjbGFzcyBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIDogYm9vbDsKIH0KIAor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBXb3JrUXVldWU7Cit9CisKIGVudW0gY2xhc3MgV2ViQ29y
ZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHMgOiB1aW50OF90IHsKICAgICBVbmtu
b3duLAogICAgIFBhc3MsCkBAIC02NCwyMCArNjcsMjIgQEAgZW51bSBjbGFzcyBXZWJDb3JlTlNV
UkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0cyA6IHVpbnQ4X3QgewogCiBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgogCisvLyBDcmVhdGVkIG9uIHRoZSBtYWluIHRocmVhZDsgdXNlZCBvbiB0
YXJnZXRRdWV1ZS4KIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lv
biA6IE5TT2JqZWN0IHsKIEBwcml2YXRlCiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlcj4gX2xvYWRlcjsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IF90
YXJnZXRRdWV1ZTsKICAgICBXZWFrT2JqQ1B0cjxpZDxOU1VSTFNlc3Npb25EZWxlZ2F0ZT4+IF9k
ZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8TlNPcGVyYXRpb25RdWV1ZT4gX3F1ZXVlOwogICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gX3Nlc3Npb25EZXNjcmlwdGlvbjsKLSAgICBIYXNoU2V0PFJldGFp
blB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+PiBfZGF0YVRhc2tzOwotICAgIEhhc2hT
ZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gX29yaWdpbnM7CiAgICAgTG9jayBf
ZGF0YVRhc2tzTG9jazsKLSAgICBCT09MIF9pbnZhbGlkYXRlZDsKKyAgICBIYXNoU2V0PFJldGFp
blB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+PiBfZGF0YVRhc2tzOyAvLyBQcm90ZWN0
ZWQgYnkgX2RhdGFUYXNrc0xvY2sKKyAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4+IF9vcmlnaW5zOyAvLyBBY2Nlc3NlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAg
V1RGOjpBdG9taWM8Qk9PTD4gX2ludmFsaWRhdGVkOwogICAgIE5TVUludGVnZXIgX25leHRUYXNr
SWRlbnRpZmllcjsKLSAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBfaW50ZXJuYWxR
dWV1ZTsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IF9pbnRlcm5hbFF1ZXVlOwogICAgIFdl
YkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzIF9jb3JzUmVzdWx0czsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcj4gX3JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I+IF9y
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOyAvLyBPbmx5IGNyZWF0ZWQvYWNjZXNzZWQgb24gX3Rhcmdl
dFF1ZXVlCiB9CiAtIChpZClpbml0V2l0aFJlc291cmNlTG9hZGVyOihXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXImKWxvYWRlciBkZWxlZ2F0ZTooaWQ8TlNVUkxTZXNzaW9uVGFz
a0RlbGVnYXRlPilkZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOihOU09wZXJhdGlvblF1ZXVlKilxdWV1
ZTsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIHJldGFpbikgTlNPcGVyYXRpb25RdWV1ZSAqZGVsZWdh
dGVRdWV1ZTsKQEAgLTg1LDYgKzkwLDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJD
b3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogQHByb3BlcnR5IChyZWFkb25seSwgY29weSkg
TlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbjsKIEBwcm9wZXJ0eSAoY29w
eSkgTlNTdHJpbmcgKnNlc3Npb25EZXNjcmlwdGlvbjsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJP
T0wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVja3M7CitAcHJvcGVydHkgKGFzc2lnbiwgYXRvbWljKSBX
ZWJDb3JlTlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0cyBjb3JzUmVzdWx0czsKIC0g
KHZvaWQpZmluaXNoVGFza3NBbmRJbnZhbGlkYXRlOwogLSAodm9pZClpbnZhbGlkYXRlQW5kQ2Fu
Y2VsOwogLSAoQk9PTCl3b3VsZFRhaW50T3JpZ2luOihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYpb3JpZ2luOwpAQCAtMTIwLDIwICsxMjYsMjIgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVy
ZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClzZW5kSDJQaW5n
OihOU1VSTCAqKXVybCBwb25nSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqIF9OdWxsYWJsZSBl
cnJvciwgTlNUaW1lSW50ZXJ2YWwgaW50ZXJ2YWwpKXBvbmdIYW5kbGVyOwogQGVuZAogCisvLyBD
cmVhdGVkIG9uIGNvbS5hcHBsZS5hdmZvdW5kYXRpb24uY3VzdG9tdXJsLm5zdXJsc2Vzc2lvbgog
QGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgOiBOU09iamVjdCB7CiAgICAg
V2Vha09iakNQdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbj4gX3Nlc3Npb247CisgICAgUmVmUHRyPFdU
Rjo6V29ya1F1ZXVlPiBfdGFyZ2V0UXVldWU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gX3Jlc291cmNlOwotICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBf
cmVzcG9uc2U7CisgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IF9yZXNwb25zZTsgLy8gU2V0
IG9uIG9wZXJhdGlvbiBxdWV1ZS4KICAgICBOU1VJbnRlZ2VyIF90YXNrSWRlbnRpZmllcjsKLSAg
ICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBfb3JpZ2luYWxSZXF1ZXN0OwotICAgIFJldGFpblB0
cjxOU1VSTFJlcXVlc3Q+IF9jdXJyZW50UmVxdWVzdDsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1
ZXN0PiBfb3JpZ2luYWxSZXF1ZXN0OyAvLyBTZXQgb24gY29uc3RydWN0aW9uLCBuZXZlciBtb2Rp
ZmllZC4KKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBfY3VycmVudFJlcXVlc3Q7IC8vIFNl
dCBvbiBjb25zdHJ1Y3Rpb24sIG5ldmVyIG1vZGlmaWVkLgogICAgIGludDY0X3QgX2NvdW50T2ZC
eXRlc1JlY2VpdmVkOwogICAgIGludDY0X3QgX2NvdW50T2ZCeXRlc1NlbnQ7CiAgICAgaW50NjRf
dCBfY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1NlbmQ7CiAgICAgaW50NjRfdCBfY291bnRPZkJ5dGVz
RXhwZWN0ZWRUb1JlY2VpdmU7CiAgICAgTlNVUkxTZXNzaW9uVGFza1N0YXRlIF9zdGF0ZTsKLSAg
ICBSZXRhaW5QdHI8TlNFcnJvcj4gX2Vycm9yOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3Rh
c2tEZXNjcmlwdGlvbjsKKyAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX2Vycm9yOyAvLyBVbnVzZWQs
IGFsd2F5cyBuaWwuCisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfdGFza0Rlc2NyaXB0aW9uOyAv
LyBPbmx5IHNldCAvIHJlYWQgb24gdGhlIHVzZXIncyB0aHJlYWQuCiAgICAgZmxvYXQgX3ByaW9y
aXR5OwogfQogCkBAIC0xNDUsNyArMTUzLDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBX
ZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogQHByb3BlcnR5IGludDY0X3QgY291bnRP
ZkJ5dGVzU2VudDsKIEBwcm9wZXJ0eSBpbnQ2NF90IGNvdW50T2ZCeXRlc0V4cGVjdGVkVG9TZW5k
OwogQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmU7Ci1AcHJv
cGVydHkgTlNVUkxTZXNzaW9uVGFza1N0YXRlIHN0YXRlOworQHByb3BlcnR5IChhc3NpZ24sIGF0
b21pYykgTlNVUkxTZXNzaW9uVGFza1N0YXRlIHN0YXRlOwogQHByb3BlcnR5IChudWxsYWJsZSwg
cmVhZG9ubHksIGNvcHkpIE5TRXJyb3IgKmVycm9yOwogQHByb3BlcnR5IChudWxsYWJsZSwgY29w
eSkgTlNTdHJpbmcgKnRhc2tEZXNjcmlwdGlvbjsKIEBwcm9wZXJ0eSBmbG9hdCBwcmlvcml0eTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCAzYzhiZTA4YzI5MzRlNTRkYTNiNzQ5Y2E2ZGEz
NGVkYTk2ZGM5YjhiLi5lY2ViOGYwMjlkYzJjNzU1YTlmYmMxMzk4NWMwYTMzYjg5NjQwYjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC0zNyw5ICszNywxMSBAQAogI2ltcG9ydCA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYv
Y29jb2EvVmVjdG9yQ29jb2EuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBu
YW1lc3BhY2UgV1RGOwogCiAjcHJhZ21hIG1hcmsgLSBQcml2YXRlIGRlY2xhcmF0aW9ucwogCkBA
IC01Niw3ICs1OCw3IEBAIHN0YXRpYyBOU0RhdGUgKiBfX251bGxhYmxlIG5ldHdvcmtMb2FkTWV0
cmljc0RhdGUoTW9ub3RvbmljVGltZSB0aW1lKQogfQogCiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VS
TFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIDogTlNPYmplY3QKLS0gKGluc3RhbmNldHlw
ZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNz
OworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYmKW1ldHJpY3Mgb25UYXJnZXQ6KFdURjo6V29ya1F1ZXVlKil3b3JrUXVldWU7CiBA
cHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpmZXRjaFN0YXJ0RGF0
ZTsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKmRvbWFpbkxv
b2t1cFN0YXJ0RGF0ZTsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0Rh
dGUgKmRvbWFpbkxvb2t1cEVuZERhdGU7CkBAIC03OSwyMSArODEsMjMgQEAgQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3Mgewog
ICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBfbWV0cmljczsKKyAgICBSZWZQdHI8V1RG
OjpXb3JrUXVldWU+IF90YXJnZXRRdWV1ZTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0
aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3MKKy0gKGluc3Rh
bmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJilt
ZXRyaWNzIG9uVGFyZ2V0OihXVEY6OldvcmtRdWV1ZSopcXVldWUKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIHF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfbWV0
cmljcyA9IG1ldHJpY3M7CisgICAgX21ldHJpY3MgPSBXVEZNb3ZlKG1ldHJpY3MpOworICAgIF90
YXJnZXRRdWV1ZSA9IHF1ZXVlOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxs
b2MKIHsKLSAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQo
V2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MuY2xhc3MsIHNlbGYpKQot
ICAgICAgICByZXR1cm47CisgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbbWV0cmljcyA9IFdU
Rk1vdmUoX21ldHJpY3MpXSB7IH0pOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtMjE3
LDI4ICsyMjEsMjkgQEAgLSAoQk9PTCltdWx0aXBhdGgKIEBlbmQKIAogQGludGVyZmFjZSBXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgOiBOU09iamVjdAotLSAoaW5zdGFuY2V0eXBlKV9p
bml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3M7Cist
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWV0cmljczooV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJiYpbWV0cmljcyBvblRhcmdldDoobm9ubnVsbCBXVEY6OldvcmtRdWV1ZSAqKXRhcmdldFF1
ZXVlOwogQHByb3BlcnR5IChjb3B5LCByZWFkb25seSkgTlNBcnJheTxOU1VSTFNlc3Npb25UYXNr
VHJhbnNhY3Rpb25NZXRyaWNzICo+ICp0cmFuc2FjdGlvbk1ldHJpY3M7CiBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgewogICAgIFJldGFpblB0
cjxXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcz4gX3RyYW5zYWN0aW9u
TWV0cmljczsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IF90YXJnZXRRdWV1ZTsKIH0KIAot
LSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYmKW1ldHJpY3MKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzIG9uVGFyZ2V0Oihub25udWxsIFdURjo6V29y
a1F1ZXVlICopdGFyZ2V0UXVldWUKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IHRhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAKICAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfdHJhbnNhY3Rpb25NZXRy
aWNzID0gYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNz
IGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNzOldURk1vdmUobWV0cmljcyldKTsKKyAgICBfdGFyZ2V0
UXVldWUgPSB0YXJnZXRRdWV1ZTsKKyAgICBfdHJhbnNhY3Rpb25NZXRyaWNzID0gYWRvcHROUyhb
W1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIGFsbG9jXSBfaW5pdFdp
dGhNZXRyaWNzOldURk1vdmUobWV0cmljcykgb25UYXJnZXQ6dGFyZ2V0UXVldWVdKTsKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKFdlYkNvcmVPYmpD
U2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0
cmljcy5jbGFzcywgc2VsZikpCi0gICAgICAgIHJldHVybjsKKyAgICBfdGFyZ2V0UXVldWUtPmRp
c3BhdGNoKFttZXRyaWNzID0gV1RGTW92ZShfdHJhbnNhY3Rpb25NZXRyaWNzKV0geyB9KTsKIAog
ICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTI0Niw2ICsyNTEsOCBAQCAtICh2b2lkKWRlYWxs
b2MKIEBkeW5hbWljIHRyYW5zYWN0aW9uTWV0cmljczsKIC0gKE5TQXJyYXk8TlNVUkxTZXNzaW9u
VGFza1RyYW5zYWN0aW9uTWV0cmljcyAqPiAqKXRyYW5zYWN0aW9uTWV0cmljcwogeworICAgIC8v
IFRPRE86IFRoaXMgaXMgbGlrZWx5IG5vdCB0aHJlYWQtc2FmZS4gSG93IHRvIGhhbmRsZSB0aGlz
IG9iamVjdD8KKyAgICAvLyBBY2Nlc3NlZCBmcm9tIGRlbGVnYXRlIHRocmVhZC4KICAgICByZXR1
cm4gQFsgKE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKilzZWxmLT5fdHJhbnNh
Y3Rpb25NZXRyaWNzLmdldCgpIF07CiB9CiAKQEAgLTI2Miw3ICsyNjksNyBAQCAtIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yJilyYW5nZVJlc3BvbnNlR2VuZXJhdG9yOwogQGVuZAog
CiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAoKQotLSAoaWQpaW5pdFdp
dGhTZXNzaW9uOihXZWJDb3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBpZGVudGlmaWVyOihOU1VJ
bnRlZ2VyKWlkZW50aWZpZXIgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKKy0gKGlk
KWluaXRXaXRoU2Vzc2lvbjooV2ViQ29yZU5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gaWRlbnRpZmll
cjooTlNVSW50ZWdlcilpZGVudGlmaWVyIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qg
dGFyZ2V0UXVldWU6KFdURjo6V29ya1F1ZXVlKil0YXJnZXRRdWV1ZTsKIC0gKHZvaWQpX3Jlc3Rh
cnQ7CiAtICh2b2lkKV9jYW5jZWw7CiBAcHJvcGVydHkgKGFzc2lnbikgV2ViQ29yZU5TVVJMU2Vz
c2lvbiAqIF9OdWxsYWJsZSBzZXNzaW9uOwpAQCAtMjc0LDIwICsyODEsMjYgQEAgTlNfQVNTVU1F
X05PTk5VTExfRU5ECiAjcHJhZ21hIG1hcmsgLSBXZWJDb3JlTlNVUkxTZXNzaW9uCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNzaW9uCitAc3ludGhlc2l6ZSBjb3JzUmVzdWx0cyA9
IF9jb3JzUmVzdWx0czsKKwogLSAoaWQpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjooUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyJilsb2FkZXIgZGVsZWdhdGU6KGlkPE5TVVJMU2Vzc2lvblRhc2tE
ZWxlZ2F0ZT4paW5EZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOihOU09wZXJhdGlvblF1ZXVlKilpblF1
ZXVlCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIEFTU0VSVChf
Y29yc1Jlc3VsdHMgPT0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6
OlVua25vd24pOwotICAgIEFTU0VSVCghX2ludmFsaWRhdGVkKTsKKyAgICBBU1NFUlQoIV9pbnZh
bGlkYXRlZC5sb2FkKCkpOwogCiAgICAgX2xvYWRlciA9ICZsb2FkZXI7CisgICAgX3RhcmdldFF1
ZXVlID0gX2xvYWRlci0+dGFyZ2V0UXVldWUoKTsKICAgICBzZWxmLmRlbGVnYXRlID0gaW5EZWxl
Z2F0ZTsKICAgICBfcXVldWUgPSBpblF1ZXVlID8gaW5RdWV1ZSA6IFtOU09wZXJhdGlvblF1ZXVl
IG1haW5RdWV1ZV07Ci0gICAgX2ludGVybmFsUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNo
X3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZU5TVVJMU2Vzc2lvbiBfaW50ZXJuYWxRdWV1ZSIsIERJU1BB
VENIX1FVRVVFX1NFUklBTCkpOwotICAgIF9yYW5nZVJlc3BvbnNlR2VuZXJhdG9yID0gUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6Y3JlYXRlKCk7CisgICAgX2ludGVybmFsUXVldWUgPSBXVEY6Oldv
cmtRdWV1ZTo6Y3JlYXRlKCJXZWJDb3JlTlNVUkxTZXNzaW9uIF9pbnRlcm5hbFF1ZXVlIik7Cisg
ICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
eworICAgICAgICBzdHJvbmdTZWxmLT5fcmFuZ2VSZXNwb25zZUdlbmVyYXRvciA9IFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OmNyZWF0ZSgqc3Ryb25nU2VsZi0+X3RhcmdldFF1ZXVlKTsKKyAgICB9
KTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMjk2LDE3ICszMDksMTkgQEAgLSAodm9pZClk
ZWFsbG9jCiB7CiAgICAgewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKF9kYXRhVGFza3NM
b2NrKTsKLSAgICAgICAgZm9yIChhdXRvJiB0YXNrIDogX2RhdGFUYXNrcykKLSAgICAgICAgICAg
IFt0YXNrIHNldFNlc3Npb246bmlsXTsKKyAgICAgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChb
ZGF0YVRhc2tzID0gV1RGTW92ZShfZGF0YVRhc2tzKSwgcmFuZ2VSZXNwb25zZUdlbmVyYXRvciA9
IFdURk1vdmUoX3JhbmdlUmVzcG9uc2VHZW5lcmF0b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYmIHRhc2sgOiBkYXRhVGFza3MpCisgICAgICAgICAgICAgICAgW3Rhc2sg
c2V0U2Vzc2lvbjpuaWxdOworICAgICAgICB9KTsKICAgICB9CisgICAgZW5zdXJlT25NYWluVGhy
ZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKF9sb2FkZXIpXSB7IH0pOwogCi0gICAgY2FsbE9uTWFpblRo
cmVhZChbbG9hZGVyID0gV1RGTW92ZShfbG9hZGVyKV0gewotICAgIH0pOwogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiB7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURfUEFSQU0oem9uZSk7CiAgICAgcmV0
dXJuIFtzZWxmIHJldGFpbl07CiB9CkBAIC0zMTUsNiArMzMwLDcgQEAgLSAoaWQpY29weVdpdGha
b25lOihOU1pvbmUgKil6b25lCiAKIC0gKHZvaWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrICopdGFzawogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldv
cmtRdWV1ZSgpOwogICAgIHRhc2suc2Vzc2lvbiA9IG5pbDsKIAogICAgIHsKQEAgLTMyMiwxMiAr
MzM4LDExIEBAIC0gKHZvaWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrICopdGFzawogCiAgICAgICAgIEFTU0VSVChfZGF0YVRhc2tzLmNvbnRhaW5zKHRhc2spKTsK
ICAgICAgICAgX2RhdGFUYXNrcy5yZW1vdmUodGFzayk7Ci0gICAgICAgIGlmICghX2RhdGFUYXNr
cy5pc0VtcHR5KCkgfHwgIV9pbnZhbGlkYXRlZCkKKyAgICAgICAgaWYgKCFfZGF0YVRhc2tzLmlz
RW1wdHkoKSB8fCAhX2ludmFsaWRhdGVkLmxvYWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbj4gc3Ryb25nU2VsZiB7IHNl
bGYgfTsKLSAgICBbc2VsZiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZl0geworICAg
IFtzZWxmIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYp
XSB7CiAgICAgICAgIGlmIChbc3Ryb25nU2VsZi5nZXQoKS5kZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGlkQmVjb21lSW52YWxpZFdpdGhFcnJvcjopXSkK
ICAgICAgICAgICAgIFtzdHJvbmdTZWxmLmdldCgpLmRlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJM
U2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkQmVjb21lSW52YWxpZFdpdGhFcnJvcjpuaWxd
OwogICAgIH1dOwpAQCAtMzM1LDkgKzM1MCw4IEBAIC0gKHZvaWQpdGFza0NvbXBsZXRlZDooV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzawogCiAtICh2b2lkKWFkZERlbGVnYXRlT3Bl
cmF0aW9uOihGdW5jdGlvbjx2b2lkKCk+JiYpZnVuY3Rpb24KIHsKLSAgICBSZXRhaW5QdHI8V2Vi
Q29yZU5TVVJMU2Vzc2lvbj4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKICAgICBSZXRhaW5QdHI8TlNC
bG9ja09wZXJhdGlvbj4gb3BlcmF0aW9uID0gW05TQmxvY2tPcGVyYXRpb24gYmxvY2tPcGVyYXRp
b25XaXRoQmxvY2s6bWFrZUJsb2NrUHRyKFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKV07Ci0gICAg
ZGlzcGF0Y2hfYXN5bmMoX2ludGVybmFsUXVldWUuZ2V0KCksIFtzdHJvbmdTZWxmLCBvcGVyYXRp
b25dIHsKKyAgICBfaW50ZXJuYWxRdWV1ZS0+ZGlzcGF0Y2goW3N0cm9uZ1NlbGYgPSByZXRhaW5Q
dHIoc2VsZiksIG9wZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKV0gewogICAgICAgICBbc3Ry
b25nU2VsZi5nZXQoKS5kZWxlZ2F0ZVF1ZXVlIGFkZE9wZXJhdGlvbjpvcGVyYXRpb24uZ2V0KCld
OwogICAgICAgICBbb3BlcmF0aW9uIHdhaXRVbnRpbEZpbmlzaGVkXTsKICAgICB9KTsKQEAgLTM0
NSwyMSArMzU5LDI0IEBAIC0gKHZvaWQpYWRkRGVsZWdhdGVPcGVyYXRpb246KEZ1bmN0aW9uPHZv
aWQoKT4mJilmdW5jdGlvbgogCiAtICh2b2lkKXRhc2s6KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFzayAqKXRhc2sgZGlkUmVjZWl2ZUNPUlNBY2Nlc3NDaGVja1Jlc3VsdDooQk9PTClyZXN1bHQK
IHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBVTlVTRURf
UEFSQU0odGFzayk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIF9jb3JzUmVzdWx0cyA9IFdl
YkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpGYWlsOwotICAgIGVsc2Ug
aWYgKF9jb3JzUmVzdWx0cyAhPSBXZWJDb3JlTlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVz
dWx0czo6RmFpbCkKLSAgICAgICAgX2NvcnNSZXN1bHRzID0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNP
UlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlBhc3M7CisgICAgICAgIHNlbGYuY29yc1Jlc3VsdHMgPSBX
ZWJDb3JlTlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0czo6RmFpbDsKKyAgICBlbHNl
IGlmIChzZWxmLmNvcnNSZXN1bHRzICE9IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hl
Y2tSZXN1bHRzOjpGYWlsKQorICAgICAgICBzZWxmLmNvcnNSZXN1bHRzID0gV2ViQ29yZU5TVVJM
U2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlBhc3M7CiB9CiAKIC0gKHZvaWQpdGFzazoo
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzayBkaWRSZWNlaXZlUmVzcG9uc2VGcm9t
T3JpZ2luOihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpb3JpZ2luCiB7CisgICAgX3Rh
cmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgVU5VU0VEX1BBUkFNKHRhc2sp
OwogICAgIF9vcmlnaW5zLmFkZChXVEZNb3ZlKG9yaWdpbikpOwogfQogCiAtIChXZWJDb3JlOjpS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yJilyYW5nZVJlc3BvbnNlR2VuZXJhdG9yCiB7CisgICAgX3Rh
cmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgcmV0dXJuICpfcmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjsKIH0KIApAQCAtNDA2LDcgKzQyMyw3IEBAIC0gKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlciYpbG9hZGVyCiBAZHluYW1pYyBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrczsK
IC0gKEJPT0wpZGlkUGFzc0NPUlNBY2Nlc3NDaGVja3MKIHsKLSAgICByZXR1cm4gX2NvcnNSZXN1
bHRzID09IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpQYXNzOwor
ICAgIHJldHVybiBzZWxmLmNvcnNSZXN1bHRzID09IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNj
ZXNzQ2hlY2tSZXN1bHRzOjpQYXNzOwogfQogCiAtIChCT09MKXdvdWxkVGFpbnRPcmlnaW46KGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luICYpb3JpZ2luCkBAIC00MjAsNyArNDM3LDcgQEAg
LSAoQk9PTCl3b3VsZFRhaW50T3JpZ2luOihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiAm
KW9yaWdpbgogCiAtICh2b2lkKWZpbmlzaFRhc2tzQW5kSW52YWxpZGF0ZQogewotICAgIF9pbnZh
bGlkYXRlZCA9IFlFUzsKKyAgICBfaW52YWxpZGF0ZWQuc3RvcmUoWUVTKTsKICAgICB7CiAgICAg
ICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoX2RhdGFUYXNrc0xvY2spOwogICAgICAgICBpZiAoIV9k
YXRhVGFza3MuaXNFbXB0eSgpKQpAQCAtNDk0LDEwICs1MTEsMTAgQEAgLSAodm9pZClnZXRBbGxU
YXNrc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxfX2tpbmRvZiBOU1VS
TFNlc3Npb24KIAogLSAoTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhVGFza1dpdGhSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7Ci0gICAgaWYgKF9pbnZhbGlkYXRlZCkKKyAgICBp
ZiAoX2ludmFsaWRhdGVkLmxvYWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8g
dGFzayA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgYWxsb2NdIGluaXRX
aXRoU2Vzc2lvbjpzZWxmIGlkZW50aWZpZXI6X25leHRUYXNrSWRlbnRpZmllcisrIHJlcXVlc3Q6
cmVxdWVzdF0pOworICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgYWxsb2NdIGluaXRXaXRoU2Vzc2lvbjpzZWxmIGlkZW50aWZpZXI6X25leHRUYXNr
SWRlbnRpZmllcisrIHJlcXVlc3Q6cmVxdWVzdCB0YXJnZXRRdWV1ZTpfdGFyZ2V0UXVldWUuZ2V0
KCldKTsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoX2RhdGFUYXNrc0xvY2sp
OwogICAgICAgICBfZGF0YVRhc2tzLmFkZCh0YXNrLmdldCgpKTsKQEAgLTUxNCw3ICs1MzEsNyBA
QCAtICh2b2lkKXNlbmRIMlBpbmc6KE5TVVJMICopdXJsIHBvbmdIYW5kbGVyOih2b2lkICheKShO
U0Vycm9yICplcnJvciwgTlNUaW1lSW50ZQogewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlbGYs
IHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHVybCA9IHJldGFpblB0cih1cmwpLCBwb25n
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihwb25nSGFuZGxlcildICgpIG11dGFibGUgewogCi0gICAg
ICAgIGlmIChfaW52YWxpZGF0ZWQpCisgICAgICAgIGlmIChfaW52YWxpZGF0ZWQubG9hZCgpKQog
ICAgICAgICAgICAgcmV0dXJuIHBvbmdIYW5kbGVyKGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBp
bml0V2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvclVua25vd24gdXNl
ckluZm86bmlsXSkuZ2V0KCksIDApOwogCiAgICAgICAgIHNlbGYubG9hZGVyLnNlbmRIMlBpbmco
dXJsLmdldCgpLCBbc2VsZiwgc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHBvbmdI
YW5kbGVyID0gV1RGTW92ZShwb25nSGFuZGxlcildIChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJj
ZUVycm9yPiYmIHJlc3VsdCkgbXV0YWJsZSB7CkBAIC01MjQsOCArNTQxLDEwIEBAIC0gKHZvaWQp
c2VuZEgyUGluZzooTlNVUkwgKil1cmwgcG9uZ0hhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKmVy
cm9yLCBOU1RpbWVJbnRlCiAgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSByZXN1bHQudmFsdWUo
KS52YWx1ZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVycm9yID0gcmVz
dWx0LmVycm9yKCk7Ci0gICAgICAgICAgICBbc2VsZiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbcG9u
Z0hhbmRsZXIgPSBXVEZNb3ZlKHBvbmdIYW5kbGVyKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKSwg
aW50ZXJ2YWxdIHsKLSAgICAgICAgICAgICAgICBwb25nSGFuZGxlcihlcnJvci5nZXQoKSwgaW50
ZXJ2YWwpOworICAgICAgICAgICAgW3NlbGYgYWRkRGVsZWdhdGVPcGVyYXRpb246W3BvbmdIYW5k
bGVyID0gV1RGTW92ZShwb25nSGFuZGxlciksIGVycm9yID0gV1RGTW92ZShlcnJvciksIGludGVy
dmFsXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwb25n
SGFuZGxlciA9IFdURk1vdmUocG9uZ0hhbmRsZXIpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpLCBp
bnRlcnZhbF0geworICAgICAgICAgICAgICAgICAgICBwb25nSGFuZGxlcihlcnJvci5nZXQoKSwg
aW50ZXJ2YWwpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfV07CiAgICAgICAg
IH0pOwogICAgIH0pOwpAQCAtNTk3LDkgKzYxNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQgOiBwdWJsaWMgUGxhdGZvcm1N
ZWRpYVJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQoV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrICp0YXNrKQorICAgIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVu
dChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIFdURjo6V29ya1F1ZXVlJiB0YXJn
ZXQpCiAgICAgICAgIDogbV90YXNrKHRhc2spCisgICAgICAgICwgbV90YXJnZXRRdWV1ZSh0YXJn
ZXQpCiAgICAgeworICAgICAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7
CiAgICAgfQogCiAgICAgdm9pZCBjbGVhclRhc2soKTsKQEAgLTYxNCwxOSArNjM1LDE5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBMb2NrIG1f
dGFza0xvY2s7Ci0gICAgV2Vha09iakNQdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBt
X3Rhc2sgV1RGX0dVQVJERURfQllfTE9DSyhtX3Rhc2tMb2NrKTsKKyAgICBXZWFrT2JqQ1B0cjxX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IG1fdGFzazsgLy8gT25seSBhY2Nlc3NlZCBvbiB0
YXJnZXQgcXVldWUuCisgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3RhcmdldFF1ZXVlOwogfTsK
IAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmNsZWFyVGFzaygpCiB7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5h
c3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgbV90YXNrID0gbnVsbHB0cjsKIH0KIAogdm9pZCBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFTZW50KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1f
dGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAg
ICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIApAQCAtNjM1LDggKzY1Niw4IEBAIHZv
aWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhU2VudChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmIHJlc291cmNlCiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
Q2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAg
IG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBSZWYgcHJvdGVjdGVk
VGhpcyB7ICp0aGlzIH07Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBp
ZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRp
bnVlUG9saWN5Q2hlY2s6Ok5vKTsKIApAQCAtNjQ1LDcgKzY2Niw3IEBAIHZvaWQgV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYKIAogYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3Vs
ZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xv
Y2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYg
KCFtX3Rhc2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjU0LDcgKzY3NSw3IEBAIGJv
b2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
Q2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xv
Y2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYg
KCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIApAQCAtNjYzLDIwICs2ODQsMTYgQEAgdm9pZCBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmIHJlc28KIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGll
bnQ6OnJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CisgICAgbV90YXJn
ZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIGlmICghbV90YXNrKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSByZWNlaXZlZFJlZGly
ZWN0OnJlc3BvbnNlIHJlcXVlc3Q6V1RGTW92ZShyZXF1ZXN0KSBjb21wbGV0aW9uSGFuZGxlcjog
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYg
cmVxdWVzdCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3JlcXVlc3QgPSBy
ZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOwotICAgICAgICB9KTsKLSAgICB9XTsKKyAgICBbbV90YXNrIHJl
c291cmNlOiZyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0OnJlc3BvbnNlIHJlcXVlc3Q6V1RGTW92
ZShyZXF1ZXN0KSBjb21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07
CiB9CiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjphY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsK
KyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rh
c2spCiAgICAgICAgIHJldHVybjsKIApAQCAtNjg1LDcgKzcwMiw3IEBAIHZvaWQgV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZv
cm1NZWRpYVJlCiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2Fk
RmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CisgICAgbV90
YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIGlmICghbV90YXNrKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTY5NCw3ICs3MTEsNyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudDo6bG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291
cgogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlzaGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OworICAgIG1f
dGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBpZiAoIW1fdGFzaykKICAg
ICAgICAgcmV0dXJuOwogCkBAIC03MDYsMTIgKzcyMywxMyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYg
cmVzbwogI3ByYWdtYSBtYXJrIC0gV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sKLS0gKGlkKWluaXRXaXRoU2Vz
c2lvbjooV2ViQ29yZU5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50ZWdl
cilpZGVudGlmaWVyIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKKy0gKGlkKWluaXRX
aXRoU2Vzc2lvbjooV2ViQ29yZU5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gaWRlbnRpZmllcjooTlNV
SW50ZWdlcilpZGVudGlmaWVyIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdGFyZ2V0
UXVldWU6KFdURjo6V29ya1F1ZXVlKil0YXJnZXRRdWV1ZQogewogICAgIHNlbGYudGFza0lkZW50
aWZpZXIgPSBpZGVudGlmaWVyOwotICAgIHNlbGYuc2Vzc2lvbiA9IHNlc3Npb247CiAgICAgc2Vs
Zi5zdGF0ZSA9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVN1c3BlbmRlZDsKICAgICBzZWxmLnByaW9y
aXR5ID0gTlNVUkxTZXNzaW9uVGFza1ByaW9yaXR5RGVmYXVsdDsKKyAgICBfc2Vzc2lvbiA9IHNl
c3Npb247CisgICAgX3RhcmdldFF1ZXVlID0gdGFyZ2V0UXVldWU7CiAKICAgICAvLyBDb3JlTWVk
aWEgd2lsbCBleHBsaWNpdGx5IGFkZCBhIHVzZXIgYWdlbnQgaGVhZGVyLiBSZW1vdmUgaWYgcHJl
c2VudC4KICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlVVJMUmVxdWVzdD4gbXV0YWJsZVJlcXVlc3Q7
CkBAIC03MzYsNyArNzU0LDcgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAK
IC0gKHZvaWQpX3Jlc3RhcnQKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIF90
YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogCiAgICAgW3NlbGYgX2NhbmNlbF07
CiAKQEAgLTc0NiwyMyArNzY0LDI4IEBAIC0gKHZvaWQpX3Jlc3RhcnQKICAgICBpZiAoW3NlbGYu
c2Vzc2lvbiByYW5nZVJlc3BvbnNlR2VuZXJhdG9yXS53aWxsSGFuZGxlUmVxdWVzdChzZWxmLCBz
ZWxmLm9yaWdpbmFsUmVxdWVzdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9yZXNvdXJjZSA9
IHNlbGYuc2Vzc2lvbi5sb2FkZXIucmVxdWVzdFJlc291cmNlKHNlbGYub3JpZ2luYWxSZXF1ZXN0
LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkRpc2FsbG93Q2FjaGlu
Zyk7Ci0gICAgaWYgKF9yZXNvdXJjZSkgewotICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChh
ZG9wdFJlZigqbmV3IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudChzZWxmKSkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gQSBuaWwgcmV0dXJuIGZyb20gcmVxdWVz
dFJlc291cmNlIG1lYW5zIHRoZSBsb2FkIHdhcyBjYW5jZWxsZWQgYnkgYSBkZWxlZ2F0ZSBjbGll
bnQKLSAgICBbc2VsZiBfcmVzb3VyY2U6bmlsIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjpSZXNvdXJj
ZUVycm9yKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbikgbWV0cmljczp7IH1dOwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2xvYWRlciA9IFJlZiB7IHNlbGYuc2Vzc2lvbi5sb2FkZXIg
fSwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGF1
dG8gcmVzb3VyY2UgPSBsb2FkZXItPnJlcXVlc3RSZXNvdXJjZShbc3Ryb25nU2VsZiBvcmlnaW5h
bFJlcXVlc3RdLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkRpc2Fs
bG93Q2FjaGluZyk7CisgICAgICAgIHN0cm9uZ1NlbGYtPl90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2go
W3Jlc291cmNlID0gV1RGTW92ZShyZXNvdXJjZSksIHN0cm9uZ1NlbGZdICgpIG11dGFibGUgewor
ICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3Jlc291cmNlID0gcmVzb3VyY2U7CisgICAgICAgICAg
ICBpZiAocmVzb3VyY2UpCisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldENsaWVudChhZG9w
dFJlZigqbmV3IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudChzdHJvbmdTZWxmLmdl
dCgpLCAqc3Ryb25nU2VsZi0+X3RhcmdldFF1ZXVlKSkpOworICAgICAgICAgICAgZWxzZSAvLyBB
IG5pbCByZXR1cm4gZnJvbSByZXF1ZXN0UmVzb3VyY2UgbWVhbnMgdGhlIGxvYWQgd2FzIGNhbmNl
bGxlZCBieSBhIGRlbGVnYXRlIGNsaWVudAorICAgICAgICAgICAgICAgIFtzdHJvbmdTZWxmIF9y
ZXNvdXJjZTpuaWwgbG9hZEZpbmlzaGVkV2l0aEVycm9yOlJlc291cmNlRXJyb3IoUmVzb3VyY2VF
cnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKSBtZXRyaWNzOiB7IH1dOworICAgICAgICB9KTsKKyAg
ICB9KTsKIH0KIAogLSAodm9pZClfY2FuY2VsCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIGlmIChf
cmVzb3VyY2UpIHsKLSAgICAgICAgX3Jlc291cmNlLT5zdG9wKCk7CiAgICAgICAgIF9yZXNvdXJj
ZS0+c2V0Q2xpZW50KG51bGxwdHIpOwotICAgICAgICBfcmVzb3VyY2UgPSBuaWw7CisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Jlc291cmNlID0gX3Jlc291cmNlXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIHJlc291cmNlLT5zdG9wKCk7CisgICAgICAgIH0pOworICAgICAgICAvLyBUT0RP
OiBTaG91bGQgX3Jlc291cmNlIHNob3VsZCBiZSBzZXQgdG8gbmlsID8KICAgICB9CiAgICAgaWYg
KGF1dG8gKnNlc3Npb24gPSBzZWxmLnNlc3Npb24pCiAgICAgICAgIFtzZXNzaW9uIHJhbmdlUmVz
cG9uc2VHZW5lcmF0b3JdLnJlbW92ZVRhc2soc2VsZik7CkBAIC03ODksNiArODEyLDcgQEAgLSAo
TlNVUkxSZXF1ZXN0ICopY3VycmVudFJlcXVlc3QKIAogLSAoTlNFcnJvciAqKWVycm9yCiB7Cisg
ICAgLy8gVE9ETzogX2Vycm9yIGlzIG5ldmVyIHNldCBhbmQgaXMgYWx3YXlzIG5pbC4KICAgICBy
ZXR1cm4gYWRvcHROUyhbX2Vycm9yIGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCkBAIC04MDQs
MTEgKzgyOCwxMyBAQCAtICh2b2lkKXNldFRhc2tEZXNjcmlwdGlvbjooTlNTdHJpbmcgKilkZXNj
cmlwdGlvbgogCiAtIChXZWJDb3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbgogeworICAgIC8vIFRP
RE86IE5vdCB0aHJlYWQgc2FmZSBhY2Nlc3M6IGZyb20gT3BlcmF0aW9uUXVldWUgLyBNYWluVGhy
ZWFkIGFuZCBMb2FkZXIgdGhyZWFkLgogICAgIHJldHVybiBfc2Vzc2lvbi5nZXQoKS5nZXQoKTsK
IH0KIAogLSAodm9pZClzZXRTZXNzaW9uOihXZWJDb3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbgog
eworICAgIC8vIEFjY2VzcyBmcm9tIG1haW4gdGhyZWFkLCBvcGVyYXRpb24gcXVldWUgdGhyZWFk
IGFuZCBsb2FkZXIgdGhyZWFkLgogICAgIF9zZXNzaW9uID0gc2Vzc2lvbjsKIH0KIApAQCAtODIy
LDcgKzg0OCw3IEBAIC0gKHZvaWQpY2FuY2VsCiAgICAgaWYgKHNlbGYuc3RhdGUgPT0gTlNVUkxT
ZXNzaW9uVGFza1N0YXRlQ29tcGxldGVkKQogICAgICAgICByZXR1cm47CiAgICAgc2VsZi5zdGF0
ZSA9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZUNhbmNlbGluZzsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CisgICAgX3RhcmdldFF1ZXVlLT5k
aXNwYXRjaChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICBbcHJv
dGVjdGVkU2VsZiBfY2FuY2VsXTsKICAgICAgICAgW3Byb3RlY3RlZFNlbGYgX3Jlc291cmNlOm51
bGxwdHIgbG9hZEZpbmlzaGVkV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VS
TEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckNhbmNlbGxlZCB1c2VySW5mbzpuaWxdIG1ldHJp
Y3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CiAgICAgfSk7CkBAIC04MzAsNyArODU2LDcgQEAg
LSAodm9pZCljYW5jZWwKIAogLSAodm9pZClzdXNwZW5kCiB7Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+
KHNlbGYpXSB7CisgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkU2VsZiA9IFJl
dGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNlbGYpXSB7CiAgICAgICAgIC8v
IE5TVVJMU2Vzc2lvbkRhdGFUYXNrcyBtdXN0IHN0YXJ0IG92ZXIgYWZ0ZXIgc3VzcGVuZGluZywg
c28gd2hpbGUKICAgICAgICAgLy8gd2UgY291bGQgZGVmZXIgbG9hZGluZyBhdCB0aGlzIHBvaW50
LCBpbnN0ZWFkIGNhbmNlbCBhbmQgcmVzdGFydAogICAgICAgICAvLyB1cG9uIHJlc3VtZSBzbyBh
cyB0byBhZGhlcmUgdG8gTlNVUkxTZXNzaW9uRGF0YVRhc2sgc2VtYW50aWNzLgpAQCAtODQxLDcg
Kzg2Nyw3IEBAIC0gKHZvaWQpc3VzcGVuZAogCiAtICh2b2lkKXJlc3VtZQogewotICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrPihzZWxmKV0geworICAgIF90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPihzZWxmKV0gewog
ICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi5nZXQoKS5zdGF0ZSAhPSBOU1VSTFNlc3Npb25UYXNr
U3RhdGVTdXNwZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTg1Miw5ICs4NzgsMTEg
QEAgLSAodm9pZClyZXN1bWUKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKCFpc01haW5U
aHJlYWQoKSAmJiBfcmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNsaWVudCA9IF9yZXNv
dXJjZS0+Y2xpZW50KCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQqPihjbGllbnQpLT5jbGVhclRhc2soKTsKKyAgICBpZiAoX3Jlc291
cmNlKSB7CisgICAgICAgIF90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW2NsaWVudCA9IF9yZXNvdXJj
ZS0+Y2xpZW50KCldICgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNsaWVudCkKKyAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQq
PihjbGllbnQuZ2V0KCkpLT5jbGVhclRhc2soKTsKKyAgICAgICAgfSk7CiAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Jlc291cmNlID0gV1RGTW92ZShfcmVzb3VyY2UpXSB7IH0pOwogICAgIH0K
IApAQCAtODczLDYgKzkwMSw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKV90aW1pbmdEYXRhCiAKIC0g
KHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVz
Oih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWdu
ZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudAogeworICAgIF90YXJnZXRRdWV1ZS0+YXNz
ZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJj
ZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFVOVVNFRF9QQVJBTShieXRlc1NlbnQp
OwogICAgIFVOVVNFRF9QQVJBTSh0b3RhbEJ5dGVzVG9CZVNlbnQpOwpAQCAtODgxLDkgKzkxMCwx
MCBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNl
bnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25nKQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKXJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKWNvbXBsZXRpb25IYW5kbGVyCiB7Cisg
ICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgQVNTRVJUKHJlc3Bv
bnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayB8fCByZXNw
b25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZSB8fCBy
ZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZUFm
dGVyVmFsaWRhdGlvbiB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6OlNlcnZpY2VXb3JrZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNv
dXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKICAgICBbc2VsZi5zZXNzaW9uIHRhc2s6c2VsZiBkaWRSZWNlaXZlUmVzcG9uc2VGcm9t
T3JpZ2luOlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2UudXJsKCkpXTsKICAgICBbc2Vs
Zi5zZXNzaW9uIHRhc2s6c2VsZiBkaWRSZWNlaXZlQ09SU0FjY2Vzc0NoZWNrUmVzdWx0OnJlc291
cmNlID8gcmVzb3VyY2UtPmRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKSA6IFlFU107CiAgICAg
c2VsZi5jb3VudE9mQnl0ZXNFeHBlY3RlZFRvUmVjZWl2ZSA9IHJlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpOwpAQCAtODkzLDggKzkyMyw5IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgUmVzb3Vy
CiAgICAgICAgIF9yZXNvdXJjZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogICAgIH0KLSAgICAKKwog
ICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYgeyBz
ZWxmIH07CisgICAgLy8gQWNjZXNzIHRvIHNlbGYuc2Vzc2lvbiBpc24ndCB0aHJlYWQtc2FmZSA7
IHdlYWstcG9pbnRlciBhY3Jvc3MgdGhyZWFkLgogICAgIGlmICghc2VsZi5zZXNzaW9uKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6
Tm8pOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYs
IHN0cm9uZ1Jlc3BvbnNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKQEAgLTkwMiwxNCArOTMzLDE0IEBAIC0gKHZvaWQpcmVzb3Vy
Y2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29u
c3QgUmVzb3VyCiAKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVs
ZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNl
c3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmICghW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZVJlc3BvbnNlOmNv
bXBsZXRpb25IYW5kbGVyOildKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJv
bmdTZWxmLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl90YXJnZXRRdWV1ZS0+ZGlzcGF0
Y2goW3N0cm9uZ1NlbGYsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vzc2lv
bjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNrOihOU1VS
TFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkUmVjZWl2ZVJlc3BvbnNlOnN0
cm9uZ1Jlc3BvbnNlLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbc3Ryb25n
U2VsZiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5T
VVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24pIG11dGFibGUgewotICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgZGlzcG9zaXRpb24sIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewor
ICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2Vs
ZiwgZGlzcG9zaXRpb24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChkaXNwb3NpdGlvbiA9PSBO
U1VSTFNlc3Npb25SZXNwb25zZUNhbmNlbCkKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6Tm8pOwogICAgICAgICAgICAgICAg
IGVsc2UgewpAQCAtOTIzLDE4ICs5NTQsMTggQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBSZXNvdXIKIAog
LSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRD
YWNoZVJlc3BvbnNlOihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZQogeworICAgIF90
YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogCi0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLQogICAgIC8vIEZJWE1FOiByZW1vdmUgaWYgPHJkYXI6Ly9wcm9i
bGVtLzIwMDAxOTg1PiBpcyBldmVyIHJlc29sdmVkLgogICAgIHJldHVybiByZXNwb25zZS5odHRw
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQog
CiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2Vp
dmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhCiB7CisgICAgX3RhcmdldFF1ZXVlLT5h
c3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291
cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7Ci0gICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxl
Z2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdU
Rk1vdmUoZGF0YSldIHsKKyAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltz
dHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewogICAg
ICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0
aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0g
KGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRl
bGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCkBAIC05NDQsMTEg
Kzk3NSwxMiBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YQogCiAtICh2b2lkKXJlc291cmNlOihQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFJlc291cmNlUmVxdWVzdCYmKXJlcXVl
c3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJ
c09uV29ya1F1ZXVlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8
IHJlc291cmNlID09IF9yZXNvdXJjZSk7Ci0gICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9w
ZXJhdGlvbjpbc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgcmVzcG9uc2UgPSByZXRhaW5Q
dHIocmVzcG9uc2UubnNVUkxSZXNwb25zZSgpKSwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRD
b3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgeworICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9u
Z1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHJlc3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKSksIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0YXJnZXRRdWV1ZSA9IF90
YXJnZXRRdWV1ZV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghW3Jlc3BvbnNlIGlzS2luZE9m
Q2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pIHsKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgeworICAgICAgICAgICAgdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFty
ZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTk1NiwxNCArOTg4LDE0IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3QgUmVzb3VyCiAK
ICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8
TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdh
dGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoVVJMU2Vzc2lvbjp0YXNrOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6
Y29tcGxldGlvbkhhbmRsZXI6KV0pIHsKLSAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXJCbG9jayA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0KSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Qg
eyBuZXdSZXF1ZXN0IH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckJs
b2NrID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCB0YXJnZXRRdWV1ZSA9IFdURk1vdmUodGFyZ2V0UXVldWUpXShOU1VSTFJlcXVl
c3QgKm5ld1JlcXVlc3QpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHRhcmdldFF1ZXVlLT5k
aXNwYXRjaChbcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwog
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBbZGF0YURl
bGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lv
biB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopc3Ryb25nU2VsZi5nZXQoKSB3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZS5nZXQoKSBuZXdSZXF1
ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0
ZUhUVFBCb2R5KSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlckJsb2NrLmdldCgp
XTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3JlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHRhcmdldFF1ZXVlLT5kaXNw
YXRjaChbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KQEAgLTk3Miw2ICsxMDA0LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBSZXNvdXIKIAogLSAo
dm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZpbmlz
aGVkV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgbWV0cmljczooY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiltZXRyaWNzCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVl
KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09
IF9yZXNvdXJjZSk7CiAgICAgaWYgKHNlbGYuc3RhdGUgPT0gTlNVUkxTZXNzaW9uVGFza1N0YXRl
Q29tcGxldGVkKQogICAgICAgICByZXR1cm47CkBAIC05ODAsNyArMTAxMyw3IEBAIC0gKHZvaWQp
X3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGaW5pc2hlZFdp
dGhFcnJvcjooTlNFcnJvCiAgICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
az4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKICAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lv
bj4gc3Ryb25nU2Vzc2lvbiB7IHNlbGYuc2Vzc2lvbiB9OwogICAgIFJldGFpblB0cjxOU0Vycm9y
PiBzdHJvbmdFcnJvciB7IGVycm9yIH07Ci0gICAgYXV0byB0YXNrTWV0cmljcyA9IGFkb3B0TlMo
W1tXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgYWxsb2NdIF9pbml0V2l0aE1ldHJpY3M6
TmV0d29ya0xvYWRNZXRyaWNzKG1ldHJpY3MpXSk7CisgICAgYXV0byB0YXNrTWV0cmljcyA9IGFk
b3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgYWxsb2NdIF9pbml0V2l0aE1l
dHJpY3M6bWV0cmljcy5pc29sYXRlZENvcHkoKSBvblRhcmdldDpfdGFyZ2V0UXVldWUuZ2V0KCld
KTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmLCBz
dHJvbmdTZXNzaW9uLCBzdHJvbmdFcnJvciwgdGFza01ldHJpY3MgPSBXVEZNb3ZlKHRhc2tNZXRy
aWNzKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4g
ZGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uVGFza0RlbGVnYXRlPilzdHJvbmdTZXNzaW9uLmdl
dCgpLmRlbGVnYXRlOwogCkBAIC05OTAsNyArMTAyMyw3IEBAIC0gKHZvaWQpX3Jlc291cmNlOihQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjooTlNF
cnJvCiAgICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihV
UkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6KV0pCiAgICAgICAgICAgICBbZGVs
ZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2Vzc2lvbi5nZXQoKSB0YXNr
OihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkQ29tcGxldGVXaXRo
RXJyb3I6c3Ryb25nRXJyb3IuZ2V0KCldOwogCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0
cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb25dIHsKKyAgICAgICAgc3Ryb25nU2VsZi0+X3RhcmdldFF1
ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2VsZiwgc3Ryb25nU2Vzc2lvbl0gewogICAgICAgICAgICAg
W3N0cm9uZ1Nlc3Npb24gdGFza0NvbXBsZXRlZDpzdHJvbmdTZWxmLmdldCgpXTsKICAgICAgICAg
fSk7CiAgICAgfV07CkBAIC05OTgsMTYgKzEwMzEsMTkgQEAgLSAodm9pZClfcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOihOU0Vy
cm8KIAogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBh
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFJlc291cmNlRXJyb3ImKWVy
cm9yCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgW3Nl
bGYgX3Jlc291cmNlOnJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjplcnJvci5uc0Vycm9y
KCkgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9XTsKIH0KIAogLSAodm9pZClyZXNvdXJj
ZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihj
b25zdCBSZXNvdXJjZUVycm9yJillcnJvcgogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNP
bldvcmtRdWV1ZSgpOwogICAgIFtzZWxmIF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRX
aXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07
CiB9CiAKIC0gKHZvaWQpcmVzb3VyY2VGaW5pc2hlZDooUGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBtZXRyaWNzOihjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MKIHsKKyAg
ICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBbc2VsZiBfcmVzb3Vy
Y2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOm5pbCBtZXRyaWNzOm1ldHJpY3NdOwog
fQogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDcyYTQyMmQ0YWVmZDY2NTFmZjlkY2Y3ODQzN2MwNjQy
YjJlNTE3ZGIuLmU1ZTY5YWVmYjAwZjc0YjU5ODQxNzc1NGJkMjZlOTc0MjhmZWVjNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTQ1MSw4ICs0NTEsMTEgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW90ZUF1ZGlvRGVzdGluYXRpb24KIAog
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkKIHsKLSAgICBpZiAoIW1fcmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIpCisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgaWYgKCFtX3Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKSB7CiAgICAgICAgIG1fcmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIgPSBtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyPigpOworICAg
ICAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLT5pbml0aWFsaXplQ29ubmVjdGlvbigm
Y29ubmVjdGlvbigpKTsKKyAgICB9CiAKICAgICByZXR1cm4gKm1fcmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5kZXggN2Y1MTJjNmMxMWE4ZTcxMDhjZjAwNjJiNTg0
ZDI3YjU4OTA4ZDE4Zi4uNzMzOGEzZWQxM2ViMTNmOWZhYzc5YjA2Y2RkYjJlM2RmNzIzOWM1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNiBAQCBSZW1vdGVNZWRpYVJlc291cmNlOjpSZW1v
dGVNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyJiByZW1vdGVNZWRpYQog
CiBSZW1vdGVNZWRpYVJlc291cmNlOjp+UmVtb3RlTWVkaWFSZXNvdXJjZSgpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAgICAgc3RvcCgpOwogICAgIGlmICghbV9yZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNzIsMTIgKzcxLDEyIEBAIGJv
b2wgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0
CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV9jbGllbnQpCisgICAgYXV0byBjbGllbnQgPSB0
aGlzLT5jbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsK
LSAgICBtX2NsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UsIFtwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYXV0byBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7Ci0gICAgICAgIEFT
U0VSVChpc01haW5SdW5Mb29wKCkpOworICAgIGNsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCgqdGhp
cywgcmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBzaG91bGRDb250aW51ZSkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZVBv
bGljeUNoZWNrOjpObykKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnN0b3AoKTsKIApAQCAt
ODcsMzkgKzg2LDM5IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAKIHZvaWQgUmVtb3RlTWVk
aWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+cmVkaXJlY3RSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShy
ZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAo
YXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5yZWRpcmVjdFJl
Y2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVp
bnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQogewotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQs
IHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50
KCkpCisgICAgICAgIGNsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRl
c1RvQmVTZW50KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAg
bV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSk7CisgICAgaWYgKGF1dG8gY2xpZW50
ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBk
YXRhKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjphY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgbV9kaWRQYXNzQWNjZXNz
Q29udHJvbENoZWNrID0gZmFsc2U7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKCp0aGlzLCBlcnJvcik7CisgICAgaWYgKGF1dG8g
Y2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+YWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKCp0aGlzLCBlcnJvcik7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6
bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBlcnJvcik7CisgICAgaWYg
KGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+bG9hZEZhaWxl
ZCgqdGhpcywgZXJyb3IpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmxvYWRGaW5p
c2hlZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKKyAg
ICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5sb2Fk
RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBjYzcwZDFjNDE2YmI5YzNjOWI1MGJiNzliMjc1YTIz
YmFiOWI0MGVmLi43ZjlmZTcyODBiNTljNjRhMzI1OWE3NTAxYjZhM2U2Yjc5YTU5NDEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcjo6UmVtb3RlTWVkaWFSZXNvdXJjZUxv
YWRlcihSZW1vdGVNZWRpYVBsYXllclByb3h5JiByZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAg
IDogbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KHJlbW90ZU1lZGlhUGxheWVyUHJveHkpCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiB9CiAKIFJlbW90ZU1lZGlhUmVzb3VyY2VMb2Fk
ZXI6On5SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyKCkKQEAgLTQ2LDYgKzQ3LDcgQEAgUmVtb3Rl
TWVkaWFSZXNvdXJjZUxvYWRlcjo6flJlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIoKQogCiBSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgTG9hZE9wdGlvbnMgb3B0aW9u
cykKIHsKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICAgICBpZiAoIW1fcmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTU0LDYgKzU2LDcg
QEAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKFJlc291cmMKIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTG9h
ZGVyOjpzZW5kSDJQaW5nKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPFNlY29uZHMsIFJlc291cmNlRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
eworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIGlmICghbV9yZW1vdGVNZWRpYVBs
YXllclByb3h5KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0
MGUzODEzYTQ4YWFiODM3MjM3NTMyOWJhYzk2YTEyNjY3MDg3OGUyLi4zMmUxMmY1N2U0NGRlZWMz
YTA1YjI0Nzk0NzZlMGZkNmJkOGRjMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTQxLDkg
KzQxLDIwIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVy
KFJlbW90ZU1lZGlhUGxheWVyUHJveHkmKTsKICAgICB+UmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRl
cigpOwogCisgICAgc3RhdGljIFJlZjxXVEY6OldvcmtRdWV1ZT4gZGVmYXVsdFF1ZXVlKCkKKyAg
ICB7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJlZjxXVEY6OldvcmtRdWV1ZT4+IG1lc3NhZ2VRdWV1ZTsK
KyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgW10geworICAgICAgICAgICAgbWVzc2Fn
ZVF1ZXVlLmNvbnN0cnVjdChXb3JrUXVldWU6OmNyZWF0ZSgiUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyIiwgV1RGOjpXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCkpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIG1lc3NhZ2VRdWV1ZS5nZXQoKTsKKyAgICB9CisKIHByaXZhdGU6CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNl
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBMb2FkT3B0aW9ucykgZmluYWw7CiAgICAgdm9p
ZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CisgICAg
UmVmPFdURjo6V29ya1F1ZXVlPiB0YXJnZXRRdWV1ZSgpIGZpbmFsIHsgcmV0dXJuIGRlZmF1bHRR
dWV1ZSgpOyB9CiAKICAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCAwMWFl
YjQyNzk4ZTlhY2IxM2E5NWQ1MWViY2M2MTNjY2E2OTJjZDVhLi45YmU0NGY0YzY2MDkyOWVhNGI1
ZTYyMTVkMWYwMDgwM2RjMmNhN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTI4
LDkgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCkBAIC0zOCwxMiArMzksMjcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlcjo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKQorUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXI6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkgPSBkZWZhdWx0OworUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXI6On5SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpID0gZGVm
YXVsdDsKKwordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6c3RvcExpc3RlbmluZ0Zv
cklQQygpCiB7CisgICAgLy8gVE9ETzogV2hhdCBpcyB0aGUgYmVzdCBwcmFjdGljZSB0byBjYWxs
IHRoaXM/CisgICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb24obnVsbHB0cik7CiB9CiAKLVJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyOjp+UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKQordm9pZCBS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uKQogeworICAgIGlmIChtX2Nvbm5lY3Rpb24gPT0gY29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworCisgICAgbV9j
b25uZWN0aW9uID0gY29ubmVjdGlvbjsKKworICAgIGlmIChtX2Nvbm5lY3Rpb24pCisgICAgICAg
IG1fY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBSZW1vdGVNZWRp
YVJlc291cmNlTG9hZGVyOjpkZWZhdWx0UXVldWUoKSwgdGhpcyk7CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXI6OmFkZE1lZGlhUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUmVz
b3VyY2UmIHJlbW90ZU1lZGlhUmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IDEz
Yjc2ZTgwYTQ5OGM5NDVlMWM0NmU5MWZkODQ3OTgyYjVlZDc0MTEuLmJkY2RhNzFlZDI1MGQxMjky
NDFlZWI4MWZhYmYwNzFhZTlkOGMxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCkBAIC01
MCwxNiArNTEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291
cmNlOwogCiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcgotICAgIDogcHVibGljIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKTsKICAgICB+UmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIoKTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKKworICAg
IHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7CiAKICAgICB2b2lk
IGFkZE1lZGlhUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZU1l
ZGlhUmVzb3VyY2UmKTsKICAgICB2b2lkIHJlbW92ZU1lZGlhUmVzb3VyY2UoUmVtb3RlTWVkaWFS
ZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAv
LyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
CiBwcml2YXRlOgpAQCAtNzIsNiArNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKTsKIAogICAgIEhhc2hNYXA8UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZp
ZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2UqPiBtX3JlbW90ZU1lZGlhUmVzb3VyY2VzOworICAgIFJl
ZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVhZGQ4NDczMGYxMWI3NzNiMDM1MmRiYWFmZThkZGFj
ZGE4NzYwOTMuLjE4ZGI5NTY1YjQ0ZWYwNjNiZTEzZGJjNTIyZDE1NzcwMWE1NDBlMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTIwMSwxNSArMjAxLDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAg
ICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9s
aWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBt
X2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHBy
b2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNw
b25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVy
Y2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIG1faW50ZXJj
ZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBlbmNv
ZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVy
LmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxlbmd0aF0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSks
IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZN
b3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmgKaW5kZXggYWM1NDIyZmMwNjcxMGJkMGUwODdlMGY0NDA5ZWQ5NDAx
N2MwY2YxNi4uMWE1NDBmOTc3MWZhMDFjNjBmYmQ1OWQ5MzEzZmQxYWVjZmY0ZTM4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFNlbmRE
YXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9p
ZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
Jik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7Cg==
</data>
<flag name="commit-queue"
          id="476039"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449903</attachid>
            <date>2022-01-25 00:30:40 -0800</date>
            <delta_ts>2022-01-25 06:18:14 -0800</delta_ts>
            <desc>WIP4</desc>
            <filename>bug-235353-20220125193038.patch</filename>
            <type>text/plain</type>
            <size>96099</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyZDcxNWJjNGVmZThjOWU1ZWIxMTFl
N2MwNmViZjBmODQ4NjlmMjAuLjYwMTE4MWFjMTNjMjIzNzRlNWExZGExMTE0MDRhOGFlZWQxZmU5
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWV0YV0gUGVyZm9ybSBtZWRpYSBuZXR3b3JraW5n
IG9wZXJhdGlvbiBvZmYgdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUzNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWVCYXNlOjph
c3NlcnRJc09uV29ya1F1ZXVlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVl
dWVHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldv
cmtRdWV1ZSBjb25zdCk6CisKIDIwMjItMDEtMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgVG9sbEZyZWVCcmlkZ2luZy5oIHRvIFhjb2Rl
IHByb2plY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMjFhMTc2ZjdhM2M0YjRlYTkzOTdmZWUwNzI4ZDllYzY4OGE3
MjViOC4uZjAzYmFmOGZlNDZiZDA5MWI2NDNhZWQwMGFiZGE1NDc5OGI3N2UwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMS0xOSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIFttZXRhXSBQZXJmb3JtIG1lZGlhIG5ldHdvcmtpbmcgb3BlcmF0
aW9uIG9mZiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTM1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDIyLTAxLTE2ICBDYW1lcm9uIE1j
Q29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5zdXJlIGluIGZsaWdodCBs
YXllciB0cmFuc2FjdGlvbnMgZG9uJ3QgYWNjdW11bGF0ZSBmdXJ0aGVyIGNhbnZhcyBkcmF3aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCmluZGV4IDM2OGMwNjZkOGY5NmI0YmNlNzQzMTgyNTJlM2MwMjY2NjFkOGY2
OTcuLjY1OGRlNjk2ZjAxY2NlNTZiM2UzYjEyODRjMzg2NWEzMjNjNTM0MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1
ZS5oCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3Bh
dGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWUuZ2V0KCk7IH0KICNlbmRp
ZgogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXNzZXJ0SXNPbldvcmtRdWV1ZSgpIGNv
bnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7CiAgICAgICAg
IFNlcmlhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCBmOWY0
N2YxMWM3ODQ1ZDI3NWUxMWNmNzIwZDBhODU2MjU5Y2IyMjFjLi41MWI0YTM0NzQxMTExNDQ2ZjE0
ZDNlM2YyYzQ0NWQzOGJiYmJlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9X
b3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCkBAIC05Miw2ICs5MiwxMyBAQCB2b2lkIFdvcmtRdWV1ZUJhc2U6OnBsYXRmb3JtSW52
YWxpZGF0ZSgpCiB7CiB9CiAKK3ZvaWQgV29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpIGNvbnN0Cit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBkaXNwYXRjaF9hc3NlcnRfcXVl
dWUobV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKKyNlbmRpZgorfQorCiBXb3JrUXVldWU6OldvcmtR
dWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmIHF1ZXVlKQogICAgIDogV29ya1F1
ZXVlQmFzZShXVEZNb3ZlKHF1ZXVlKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dl
bmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtR
dWV1ZUdlbmVyaWMuY3BwCmluZGV4IGQyNTdkM2E3MjA0ZWZiMWNiM2E1ZDg5NTQ2MTBmMmIwMjdh
OGRlNTEuLjFiZWZjMjA4ZWM0NmFjYjBiNWRlZjkwMTBjNjQzNmIyOTRiYzM2MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcApAQCAtODUsNCArODUsOSBA
QCBSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3JrUXVldWUoKQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShSdW5Mb29wOjptYWluKCkpKTsKIH0KIAor
dm9pZCBXb3JrUXVldWVCYXNlOjphc3NlcnRJc09uV29ya1F1ZXVlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoJmN1cnJlbnQoKSA9PSBtX3J1bkxvb3ApOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS84MzkxMDAxMi5kaWZmIGIvU291cmNlL1dlYkNvcmUvODM5MTAwMTIuZGlmZgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYTlhNGU2Mzk0NTJmN2Q4YTc2MjgyOTRkNDRlNTJlM2UzOWI0YTliCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvODM5MTAwMTIuZGlmZgpAQCAtMCwwICsxLDgx
IEBACitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAoraW5kZXggZGU2ZGViZTJiZDRj
Li5jNjg0Yzg1NmZjODEgMTAwNjQ0CistLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKK0BA
IC0xMzkxLDEzICsxMzkxLDIzIEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9U
cmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRpbWUmIHByCisgdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKQorIHsK
KyAgICAgbU51bUZyYW1lc0luQ29tcGxldGVCbG9jayA9IDA7CistICAgIG1fcGFja2V0RGVzY3Jp
cHRpb25zLmNsZWFyKCk7CisrICAgIG1fcGFja2V0U2l6ZXMuY2xlYXIoKTsKKysgICAgbV9wYWNr
ZXRUaW1pbmdzLmNsZWFyKCk7CisgICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgPSAwOwor
ICAgICBUcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKCk7CisgfQorIAorIHdlYm06OlN0YXR1cyBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3
ZWJtOjpSZWFkZXImIHJlYWRlciwgY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIHVpbnQ2
NF90KiBieXRlc1JlbWFpbmluZywgY29uc3QgQ01UaW1lJiBwcmVzZW50YXRpb25UaW1lLCBpbnQg
c2FtcGxlQ291bnQpCisgeworKyAgICBpZiAobV9wYWNrZXRUaW1pbmdzLnNpemUoKSkgeworKyAg
ICAgICAgYXV0byYgbGFzdFRpbWluZyA9IG1fcGFja2V0VGltaW5ncy5sYXN0KCk7CisrICAgICAg
ICBpZiAoUEFMOjpDTVRpbWVDb21wYXJlKFBBTDo6Q01UaW1lQWRkKGxhc3RUaW1pbmcuZHVyYXRp
b24sIGxhc3RUaW1pbmcucHJlc2VudGF0aW9uVGltZVN0YW1wKSwgcHJlc2VudGF0aW9uVGltZSkp
IHsKKysgICAgICAgICAgICAvLyBEaXNjb250aW51aXR5IGVuY291bnRlcmVkLCBlbWl0IHRoZSBw
cmV2aW91c2x5IGRlbXV4ZWQgc2FtcGxlcy4KKysgICAgICAgICAgICBjcmVhdGVTYW1wbGVCdWZm
ZXIobWV0YWRhdGEucG9zaXRpb24pOworKyAgICAgICAgICAgIHJlc2V0KCk7CisrICAgICAgICB9
CisrICAgIH0KKysKKyAgICAgYXV0byBzdGF0dXMgPSByZWFkRnJhbWVEYXRhKHJlYWRlciwgbWV0
YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgaWYgKCFzdGF0dXMuY29tcGxldGVkX29rKCkp
CisgICAgICAgICByZXR1cm4gc3RhdHVzOworQEAgLTE0MDcsNyArMTQxNyw3IEBAIHdlYm06OlN0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1l
RGF0YSh3ZWJtOjpSZWFkCisgICAgIGlmIChtTnVtRnJhbWVzSW5Db21wbGV0ZUJsb2NrID4gbU1h
eEJsb2NrQnVmZmVyQ2FwYWNpdHkpCisgICAgICAgICBtTWF4QmxvY2tCdWZmZXJDYXBhY2l0eSA9
IG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2s7CisgCistICAgIGlmIChtX3BhY2tldERlc2NyaXB0
aW9ucy5pc0VtcHR5KCkpCisrICAgIGlmIChtX3BhY2tldFNpemVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgIG1fc2FtcGxlUHJlc2VudGF0aW9uVGltZSA9IHByZXNlbnRhdGlvblRpbWU7CisgCisgICAg
IGlmICghZm9ybWF0RGVzY3JpcHRpb24oKSkgeworQEAgLTE0ODQsMTEgKzE0OTQsMTMgQEAgd2Vi
bTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1l
RnJhbWVEYXRhKHdlYm06OlJlYWQKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBtX3BhY2tl
dERlc2NyaXB0aW9ucy5hcHBlbmQoeyBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2N1cnJlbnRQYWNr
ZXRCeXRlT2Zmc2V0KSwgMCwgc3RhdGljX2Nhc3Q8VUludDMyPigqbV9jb21wbGV0ZVBhY2tldFNp
emUpIH0pOworKyAgICBtX3BhY2tldFNpemVzLmFwcGVuZCgqbV9jb21wbGV0ZVBhY2tldFNpemUp
OworKyAgICBtX3BhY2tldFRpbWluZ3MuYXBwZW5kKHsgbV9wYWNrZXREdXJhdGlvbiwgcHJlc2Vu
dGF0aW9uVGltZSwgUEFMOjprQ01UaW1lSW52YWxpZCB9KTsKKyAgICAgbV9jdXJyZW50UGFja2V0
Qnl0ZU9mZnNldCArPSAqbV9jb21wbGV0ZVBhY2tldFNpemU7CisgICAgIG1fY29tcGxldGVQYWNr
ZXRTaXplID0gc3RkOjpudWxsb3B0OworIAorICAgICBhdXRvIHNhbXBsZUR1cmF0aW9uID0gUEFM
OjpDTVRpbWVHZXRTZWNvbmRzKFBBTDo6Q01UaW1lU3VidHJhY3QocHJlc2VudGF0aW9uVGltZSwg
bV9zYW1wbGVQcmVzZW50YXRpb25UaW1lKSkgKyBQQUw6OkNNVGltZUdldFNlY29uZHMobV9wYWNr
ZXREdXJhdGlvbikgKiBzYW1wbGVDb3VudDsKKysKKyAgICAgaWYgKHNhbXBsZUR1cmF0aW9uID49
IG1fbWluaW11bVNhbXBsZUR1cmF0aW9uKSB7CisgICAgICAgICBjcmVhdGVTYW1wbGVCdWZmZXIo
bWV0YWRhdGEucG9zaXRpb24pOworICAgICAgICAgcmVzZXQoKTsKK0BAIC0xNTAwLDExICsxNTEy
LDExIEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0
YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCisgCisgdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCisgeworLSAgICBpZiAobV9wYWNrZXREZXNj
cmlwdGlvbnMuaXNFbXB0eSgpKQorKyAgICBpZiAobV9wYWNrZXRTaXplcy5pc0VtcHR5KCkpCisg
ICAgICAgICByZXR1cm47CisgCisgICAgIENNU2FtcGxlQnVmZmVyUmVmIHJhd1NhbXBsZUJ1ZmZl
ciA9IG51bGxwdHI7CistICAgIGF1dG8gZXJyID0gUEFMOjpDTUF1ZGlvU2FtcGxlQnVmZmVyQ3Jl
YXRlUmVhZHlXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fY29t
cGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgbV9wYWNr
ZXREZXNjcmlwdGlvbnMuc2l6ZSgpLCBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWUsIG1fcGFja2V0
RGVzY3JpcHRpb25zLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CisrICAgIGF1dG8gZXJyID0g
UEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fY29t
cGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgbV9wYWNr
ZXRTaXplcy5zaXplKCksIDEsIG1fcGFja2V0VGltaW5ncy5kYXRhKCksIG1fcGFja2V0U2l6ZXMu
c2l6ZSgpLCBtX3BhY2tldFNpemVzLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CisgICAgIGlm
IChlcnIpIHsKKyAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQXVkaW9T
YW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwg
ZXJyKTsKKyAgICAgICAgIHJldHVybjsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKK2lu
ZGV4IDQ1NWNmYjU4MDQ2Yy4uNWEzNzYzNTAwN2NmIDEwMDY0NAorLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmgKK0BAIC0yNDIsNyArMjQyLDggQEAgcHVibGljOgorICAgICAgICAgc2l6ZV90IG1f
Y3VycmVudFBhY2tldEJ5dGVPZmZzZXQgeyAwIH07CisgICAgICAgICB1aW50OF90IG1fZnJhbWVz
UGVyUGFja2V0IHsgMCB9OworICAgICAgICAgU2Vjb25kcyBtX2ZyYW1lRHVyYXRpb24geyAwX3Mg
fTsKKy0gICAgICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX3BhY2tl
dERlc2NyaXB0aW9uczsKKysgICAgICAgIFZlY3RvcjxzaXplX3Q+IG1fcGFja2V0U2l6ZXM7Cisr
ICAgICAgICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiBtX3BhY2tldFRpbWluZ3M7CisgICAg
ICAgICBzaXplX3QgbU51bUZyYW1lc0luQ29tcGxldGVCbG9jayB7IDAgfTsKKyAgICAgICAgIC8v
IEZJWE1FOiAwLjUgLSAxLjAgc2Vjb25kcyBpcyBhIGJldHRlciBkdXJhdGlvbiBwZXIgc2FtcGxl
IGJ1ZmZlciwgYnV0IHVzZSAyIHNlY29uZHMgc28gYXQgbGVhc3QgdGhlIGZpcnN0CisgICAgICAg
ICAvLyBzYW1wbGUgYnVmZmVyIHdpbGwgcGxheSB1bnRpbCB3ZSBmaXggTWVkaWFTYW1wbGVDdXJz
b3I6OmNyZWF0ZVNhbXBsZUJ1ZmZlciB0byBkZWFsIHdpdGggYGVuZEN1cnNvcmAuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWExN2E3MGZh
NThjNzIyOGY2Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZS4uMjY4YjgxMDkxNDMyZmJkZTU4Mjg4YTgx
MGMwMDg3M2ZkNjEyNWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmNwcApAQCAtMTgzLDIwICsxODMsMjEgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpy
ZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VS
ZXMKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1l
c3NhZ2UoIkNyb3NzLW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1P
cmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fbG9hZGVyLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOwogICAgICAgICBtX2RpZFBhc3NB
Y2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAg
ICAgICAgbV9jbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywgUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgY29uc29s
ZU1lc3NhZ2UuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50
KCkpCisgICAgICAgICAgICBjbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywg
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwo
KSwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpKTsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gbV9yZXNvdXJj
ZS0+b3B0aW9ucygpLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzOwotICAgIGlmICht
X2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRoaXMsIHJlc3Bv
bnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5k
bGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoYXV0byBzaG91bGRDb250
aW51ZSkgbXV0YWJsZSB7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpIHsK
KyAgICAgICAgY2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGF1dG8gc2hvdWxkQ29udGludWUpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0g
U2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6Tm8pCiAgICAgICAgICAgICAgICAgc3RvcCgpOwog
ICAgICAgICB9KTsKKyAgICB9CiAKICAgICBtX2xvYWRlci0+YWRkUmVzcG9uc2VGb3JUZXN0aW5n
KHJlc3BvbnNlKTsKIH0KQEAgLTIwNiw4ICsyMDcsOCBAQCBib29sIE1lZGlhUmVzb3VyY2U6OnNo
b3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJj
ZQogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsK
IAogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRDYWNoZVJlc3BvbnNl
KCp0aGlzLCByZXNwb25zZSk7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkp
CisgICAgICAgIHJldHVybiBjbGllbnQtPnNob3VsZENhY2hlUmVzcG9uc2UoKnRoaXMsIHJlc3Bv
bnNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjE2LDggKzIxNyw4IEBAIHZvaWQgTWVk
aWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJl
c291cmNlUmVxdWVzdCYmCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09
IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXMo
dGhpcyk7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVkaXJlY3RSZWNl
aXZlZCgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAg
ICAgY2xpZW50LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNw
b25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CkBAIC0yMjcsOCArMjI4LDggQEAg
dm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRh
U2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIGlmIChhdXRv
IGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRhdGFTZW50KCp0aGlz
LCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJj
ZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCkBAIC0yMzYsOCArMjM3LDggQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGIK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAK
ICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7
CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+
ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQpAQCAtMjQ1LDExICsyNDYsMTEgQEAgdm9pZCBNZWRpYVJlc291cmNl
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtM
b2FkTWUKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJj
ZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAg
ICBpZiAobV9jbGllbnQpIHsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkg
ewogICAgICAgICBpZiAobV9yZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBtX3Jlc291cmNlLT5yZXNvdXJjZUVy
cm9yKCkpOworICAgICAgICAgICAgY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBtX3Jlc291cmNl
LT5yZXNvdXJjZUVycm9yKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC0+
bG9hZEZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKKyAgICAgICAgICAgIGNsaWVudC0+bG9hZEZp
bmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKICAgICB9CiAgICAgc3RvcCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaAppbmRleCBjOTU4Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhh
ODEyOTkzLi43MTlmNzhiYjliZWIxOTgyMTZmYjNkMmM0ZjRkNDY5NDI0YTlmMDQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtMzEsMTAgKzMxLDEyIEBACiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsMTAgKzQ1
LDExIEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogCi1jbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQg
OiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IHsKK2NsYXNz
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Q
bGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKKyAgICAvLyBUaG9zZSBt
ZXRob2RzIG11c3QgYmUgY2FsbGVkIG9uIFBsYXRmb3JtTWVkaWFSZXNvdXJjZTo6dGFyZ2V0UXVl
dWUoKQogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjgsOSArNzEsMTMgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKCkgPSBkZWZhdWx0OwogCi0gICAg
dmlydHVhbCBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVz
b3VyY2VSZXF1ZXN0JiYsIExvYWRPcHRpb25zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbmRI
MlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRz
LCBSZXNvdXJjZUVycm9yPiYmKT4mJikgPSAwOwogCisgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBh
bnkgdGhyZWFkcy4gUmV0dXJuIHRoZSBXb3JrUXVldWUgb24gd2hpY2ggdGhlIFBsYWZ0b3JtTWVk
aWFSZXNvdXJjZSBhbmQgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IG11c3QgYmUgYmUgY2Fs
bGVkIG9uLgorICAgIHZpcnR1YWwgUmVmPFdURjo6V29ya1F1ZXVlPiB0YXJnZXRRdWV1ZSgpIHsg
cmV0dXJuIFdURjo6V29ya1F1ZXVlOjptYWluKCk7IH0KKyAgICAvLyByZXF1ZXN0UmVzb3VyY2Ug
d2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLCB0aGUgUGxhdGZvcm1NZWRpYVJlc291
cmNlIG9iamVjdCBpcyB0byBiZSB1c2VkIG9uIHRhcmdldFF1ZXVlKCkuCisgICAgdmlydHVhbCBS
ZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1
ZXN0JiYsIExvYWRPcHRpb25zKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIoKSA9IGRlZmF1bHQ7CiB9OwpAQCAtODMsMTEgKzkwLDIwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBkaWRQYXNz
QWNjZXNzQ29udHJvbENoZWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQg
c2V0Q2xpZW50KFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+JiYgY2xpZW50KSB7
IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9Ci0gICAgUGxhdGZvcm1NZWRpYVJlc291cmNl
Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQotCi1wcm90ZWN0ZWQ6
Ci0gICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4gbV9jbGllbnQ7CisgICAg
dm9pZCBzZXRDbGllbnQoUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4mJiBjbGll
bnQpCisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgIG1f
Y2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworICAgIH0KKyAgICBSZWZQdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlQ2xpZW50PiBjbGllbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OworICAgICAgICByZXR1cm4gbV9jbGllbnQ7CisgICAgfQorCitwcml2
YXRlOgorICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IG1fY2xpZW50IFdU
Rl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDk1YTM3
ODlhZDYyNzE5YzEwMGJjMDY3ZDNjZThhYWE5MzJkNTc0MTEuLjVkNWFiMTlkNmQ5ODEyM2YxZDli
MTg3MTY5ODQyMWVkOTU5Y2ZiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
IAogT0JKQ19DTEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIEFWQXNzZXRU
cmFjazsKQEAgLTQ2OCw2ICs0NjksNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxOU1RpbWVJbnRlcnZhbD4gbV9jYWNoZWRMaXZlVXBkYXRlSW50ZXJ2YWw7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE9ic2VydmVyPHZvaWQoKT4+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2Vy
dmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYnNlcnZlcjx2b2lkKCk+PiBtX3dhaXRGb3JWaWRl
b091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcjsKKyAgICBSZWY8V1RGOjpXb3JrUXVl
dWU+IG1fdGFyZ2V0UXVldWUgeyBXVEY6OldvcmtRdWV1ZTo6bWFpbigpIH07CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBiZGMyYTgyZTczZjRmZGY4OGI1YTU0Yzk5N2YzMmJm
Njg5ZGU5OTZhLi5hNmNjYzY4MmYzNGZmY2FjYjI0ODliNmZhZWQ5MjZkODcyZmZkZjAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBh
dGgsIFdhbAogICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmJhc2VVUkwgZXJy
b3I6bmlsXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIE5TQXJyYXkgKnBy
b3BlcnR5S2V5cyA9IEBbTlNVUkxOYW1lS2V5LCBOU1VSTENvbnRlbnRNb2RpZmljYXRpb25EYXRl
S2V5LCBOU1VSTElzUmVndWxhckZpbGVLZXldOwogICAgIE5TRGlyZWN0b3J5RW51bWVyYXRvciAq
ZW51bWVyYXRvciA9IFtmaWxlTWFuYWdlciBlbnVtZXJhdG9yQXRVUkw6YmFzZVVSTCBpbmNsdWRp
bmdQcm9wZXJ0aWVzRm9yS2V5czoKICAgICAgICAgcHJvcGVydHlLZXlzIG9wdGlvbnM6TlNEaXJl
Y3RvcnlFbnVtZXJhdGlvblNraXBzU3ViZGlyZWN0b3J5RGVzY2VuZGFudHMKQEAgLTQ0Nyw4ICs0
NDcsMTEgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMoKQogCiAgICAgW1ttX2F2QXNzZXQgcmVzb3VyY2VMb2Fk
ZXJdIHNldERlbGVnYXRlOm5pbCBxdWV1ZTowXTsKIAotICAgIGZvciAoYXV0byYgcGFpciA6IG1f
cmVzb3VyY2VMb2FkZXJNYXApCi0gICAgICAgIHBhaXIudmFsdWUtPmludmFsaWRhdGUoKTsKKyAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVyTWFwKSB7CisgICAgICAgIG1fdGFy
Z2V0UXVldWUtPmRpc3BhdGNoKFtsb2FkZXIgPSBwYWlyLnZhbHVlXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGxvYWRlci0+aW52YWxpZGF0ZSgpOworICAgICAgICB9KTsKKyAgICB9CiAKICAg
ICBpZiAobV92aWRlb091dHB1dCkKICAgICAgICAgbV92aWRlb091dHB1dC0+aW52YWxpZGF0ZSgp
OwpAQCAtOTY5LDcgKzk3Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwgUmV0CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9h
dkFzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAq
cmVzb3VyY2VMb2FkZXIgPSBbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBbcmVzb3Vy
Y2VMb2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXJEZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxM
b2FkZXJEZWxlZ2F0ZVF1ZXVlKCldOwogCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6aXNBVkZvdW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkKQEAgLTk3Nyw4ICs5ODAsMTAg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBSZXQKICAgICAgICAgJiYgW3Jlc291cmNlTG9hZGVyIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSldCiAgICAg
ICAgICYmIFtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNl
c3Npb25EYXRhRGVsZWdhdGVRdWV1ZSldKSB7CiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI+IG1lZGlhUmVzb3VyY2VMb2FkZXIgPSBwbGF5ZXIoKS0+Y3JlYXRlUmVz
b3VyY2VMb2FkZXIoKTsKLSAgICAgICAgaWYgKG1lZGlhUmVzb3VyY2VMb2FkZXIpCisgICAgICAg
IGlmIChtZWRpYVJlc291cmNlTG9hZGVyKSB7CisgICAgICAgICAgICBtX3RhcmdldFF1ZXVlID0g
bWVkaWFSZXNvdXJjZUxvYWRlci0+dGFyZ2V0UXVldWUoKTsKICAgICAgICAgICAgIHJlc291cmNl
TG9hZGVyLlVSTFNlc3Npb24gPSAoTlNVUkxTZXNzaW9uICopYWRvcHROUyhbW1dlYkNvcmVOU1VS
TFNlc3Npb24gYWxsb2NdIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6Km1lZGlhUmVzb3VyY2VMb2Fk
ZXIgZGVsZWdhdGU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSBkZWxlZ2F0
ZVF1ZXVlOnJlc291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGVRdWV1ZV0pLmdldCgp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0
b3IoY2hhcHRlck1ldGFkYXRhRGlkQ2hhbmdlOikgbmFtZTpBVkFzc2V0Q2hhcHRlck1ldGFkYXRh
R3JvdXBzRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDptX2F2QXNzZXQuZ2V0KCldOwpAQCAt
MjA2NywyNSArMjA3MiwzNCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogI2VuZGlmCiAjZW5k
aWYKIAotICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QsIG1fdGFyZ2V0UXVl
dWUpOwogICAgIG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZS
ZXF1ZXN0LCByZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5z
dGFydExvYWRpbmcoKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCiB7Ci0gICAgU3RyaW5nIHNjaGVtZSA9
IFtbW2F2UmVxdWVzdCByZXF1ZXN0XSBVUkxdIHNjaGVtZV07CisgICAgUmVmUHRyIHJlc291cmNl
TG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlck1hcC5nZXQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJl
cXVlc3QpOwogCi0gICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciA9
IG1fcmVzb3VyY2VMb2FkZXJNYXAuZ2V0KChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsK
LQotICAgIGlmIChyZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmVzb3VyY2VMb2FkZXItPnN0b3BM
b2FkaW5nKCk7CisgICAgaWYgKHJlc291cmNlTG9hZGVyKSB7CisgICAgICAgIG1fdGFyZ2V0UXVl
dWUtPmRpc3BhdGNoKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLT5zdG9wTG9hZGluZygpOwor
ICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0ICphdlJlcXVlc3QpCiB7CisgICAgUmVmUHRyIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJj
ZUxvYWRlck1hcC5nZXQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QpOwogICAgIG1fcmVz
b3VyY2VMb2FkZXJNYXAucmVtb3ZlKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKKwor
ICAgIGlmIChyZXNvdXJjZUxvYWRlcikgeworICAgICAgICBtX3RhcmdldFF1ZXVlLT5kaXNwYXRj
aChbcmVzb3VyY2VMb2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+aW52YWxpZGF0ZSgpOworICAgICAgICB9KTsK
KyAgICB9CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNB
dmFpbGFibGUoKQpAQCAtMjQ2Miw3ICsyNDc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpyZXNvbHZlZFVSTENoYW5nZWQoKQogCiBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdAog
ewotICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VMb2FkZXIgPSBtX2F2QXNzZXQu
Z2V0KCkucmVzb3VyY2VMb2FkZXI7CisgICAgQVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJj
ZUxvYWRlciA9IFttX2F2QXNzZXQgcmVzb3VyY2VMb2FkZXJdOwogICAgIGlmICghRGVwcmVjYXRl
ZEdsb2JhbFNldHRpbmdzOjppc0FWRm91bmRhdGlvbk5TVVJMU2Vzc2lvbkVuYWJsZWQoKQogICAg
ICAgICB8fCAhW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJM
U2Vzc2lvbildKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDc2LDcgKzI0OTAsNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNz
Q2hlY2soKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9y
aWdpbikgY29uc3QKIHsKLSAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVy
ID0gbV9hdkFzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxv
YWRlciAqcmVzb3VyY2VMb2FkZXIgPSBbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBp
ZiAoIURlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNBVkZvdW5kYXRpb25OU1VSTFNlc3Npb25F
bmFibGVkKCkKICAgICAgICAgfHwgIVtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKFVSTFNlc3Npb24pXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwZWZl
ZWFlZjViMmQ3MWJjNmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJjLi42Y2VkNWM3MDkwZGI4Njg4YmI1
Y2Y0MTZkMWNjMmEyNjFiYzM1YzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtMzUsMjAgKzM1LDI1IEBACiAKIE9CSkNfQ0xB
U1MgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q7CiAKK25hbWVzcGFjZSBXVEYgeworY2xh
c3MgV29ya1F1ZXVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJl
c291cmNlTWVkaWFMb2FkZXI7CiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOworY2xhc3MgUGFyc2VkQ29udGVudFJhbmdlOwogY2xhc3MgUGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCi1jbGFzcyBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXI+IHsKK2NsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKik7CisgICAgc3RhdGljIFJlZjxXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBw
YXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KiwgV1RGOjpXb3JrUXVldWUmKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIHZvaWQgc3Rh
cnRMb2FkaW5nKCk7CkBAIC01NiwyMyArNjEsMjcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxp
ZGF0ZSgpOwogCiBwcml2YXRlOgotICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdSZXF1ZXN0ICopOworICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0KiwgV1RGOjpXb3JrUXVldWUmKTsKIAogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRSZXNvdXJj
ZU1lZGlhTG9hZGVyOwogICAgIGZyaWVuZCBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cjsKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogCi0gICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAvLyBS
ZXR1cm4gdHJ1ZSBpZiBzdG9wTG9hZGluZygpIGdvdCBjYWxsZWQsIGluZGljYXRpbmcgdGhhdCBu
byBmdXJ0aGVyIHByb2Nlc3Npbmcgc2hvdWxkIG9jY3VyLgorICAgIGJvb2wgcmVzcG9uc2VSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBpbnQsIGNvbnN0IFBhcnNlZENvbnRlbnRSYW5nZSYsIHNpemVf
dCk7CisgICAgYm9vbCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOworCiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OworICAgIFdlYWtQdHI8TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4gbV9wYXJlbnQ7IC8vIE9ubHkgZXZlciBk
ZXJlZmVyZW5jZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIFJldGFpblB0cjxBVkFzc2V0UmVz
b3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiBtX2RhdGFVUkxNZWRpYUxvYWRlcjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcj4gbV9yZXNvdXJjZU1lZGlhTG9h
ZGVyOwotICAgIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBtX3BsYXRmb3Jt
TWVkaWFMb2FkZXI7CisgICAgUmVmUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gbV9w
bGF0Zm9ybU1lZGlhTG9hZGVyOwogICAgIHNpemVfdCBtX3Jlc3BvbnNlT2Zmc2V0IHsgMCB9Owor
ICAgIFJlZjxXVEY6OldvcmtRdWV1ZT4gbV90YXJnZXRRdWV1ZTsKKyAgICBib29sIG1faW52YWxp
ZGF0ZWQgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDRiNTk0ZmZmOGQ2ZjRmNzFjNzZkMDU2
ZWJhMTI4Zjg1ODA3ZGI0YjQuLmQxYmZjZjQyZDM0MmJhZTlmMjY3OGFmOWZiMTMyZmNiMzI4NzRl
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KQEAgLTM5LDcgKzM5LDkgQEAKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRSZXNvdXJjZUxvYWRlci5oPgogI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiBAaW50ZXJmYWNlIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdDb250ZW50SW5mb3Jt
YXRpb25SZXF1ZXN0IChXZWJLaXRFeHRlbnNpb25zKQpAQCAtMTE4LDcgKzEyMCw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNl
ID09IG1fcmVzb3VyY2UpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIG1f
cGFyZW50LnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOworICAgIG1fcGFyZW50LnJlc3BvbnNl
UmVjZWl2ZWQocmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwg
cmVzcG9uc2UuY29udGVudFJhbmdlKCksIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgp
KTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0x
MzcsMTEgKzEzOSwxMSBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYQogICAgICAgICBtX3BhcmVu
dC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKmRhdGEpOwogfQogCi1jbGFzcyBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXIgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNl
Q2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
PiB7CitjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXIgZmluYWwgOiBwdWJsaWMgUGxh
dGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+
IGNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXImLCBSZXNvdXJjZVJlcXVlc3QmJik7Ci0gICAgflBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlcigpIHsgc3RvcCgpOyB9CisgICAgc3RhdGljIFJlZlB0cjxQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI+IGNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImLCBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXImLCBSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgflBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcigpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgc3RvcCgpOwogCkBAIC0xNjIs
MTIyICsxNjQsMTM0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmlu
aXNoZWQoKTsgfQogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKKyAg
ICBjb25zdCBXVEY6OldvcmtRdWV1ZSYgbV90YXJnZXRRdWV1ZTsKICAgICBSZWZQdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9i
dWZmZXI7CiB9OwogCi1XZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQorUmVmUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQogewogICAgIGF1dG8gcmVzb3VyY2UgPSBsb2FkZXIucmVxdWVzdFJlc291
cmNlKFdURk1vdmUocmVxdWVzdCksIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9w
dGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBhdXRvKiByZXNvdXJjZVBvaW50ZXIgPSByZXNvdXJjZS5nZXQoKTsK
ICAgICBhdXRvIGNsaWVudCA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyIHsgcGFyZW50LCByZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH0pOwotICAgIFdlYWtQdHIg
cmVzdWx0ID0gY2xpZW50OwotCi0gICAgcmVzb3VyY2VQb2ludGVyLT5zZXRDbGllbnQoV1RGTW92
ZShjbGllbnQpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJlc291cmNlUG9pbnRlci0+c2V0
Q2xpZW50KGNsaWVudC5jb3B5UmVmKCkpOworICAgIHJldHVybiBjbGllbnQ7CiB9CiAKIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZWY8UGxhdGZvcm1NZWRpYVJlc291cmNlPiYm
IHJlc291cmNlKQogICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgICwgbV90YXJnZXRRdWV1ZShw
YXJlbnQubV90YXJnZXRRdWV1ZSkKICAgICAsIG1fcmVzb3VyY2UoV1RGTW92ZShyZXNvdXJjZSkp
CiB7CiB9CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpzdG9wKCkKIHsKKyAg
ICBtX3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIGlmICghbV9yZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZXNvdXJjZSA9IFdURk1vdmUobV9y
ZXNvdXJjZSk7Ci0gICAgcmVzb3VyY2UtPnN0b3AoKTsKLSAgICByZXNvdXJjZS0+c2V0Q2xpZW50
KG51bGxwdHIpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jlc291cmNlID0gV1RGTW92ZShtX3Jl
c291cmNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHJlc291cmNlLT5zdG9wKCk7CisgICAgICAg
IHJlc291cmNlLT5zZXRDbGllbnQobnVsbHB0cik7CisgICAgfSk7CiB9CiAKIHZvaWQgUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIG1fcGFyZW50LnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOworICAgIG1fdGFyZ2V0
UXVldWUuYXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCisgICAgbV9wYXJlbnQucmVzcG9uc2VSZWNl
aXZlZChyZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZXNw
b25zZS5jb250ZW50UmFuZ2UoKSwgcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOwog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9
CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmFpbGVkKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogeworICAgIG1fdGFyZ2V0UXVldWUuYXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOworCiAgICAgbV9wYXJlbnQubG9hZEZhaWxlZChlcnJvcik7CiB9CiAKIHZvaWQgUGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogeworICAgIG1fdGFyZ2V0
UXVldWUuYXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVk
KCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Cisg
ICAgbV90YXJnZXRRdWV1ZS5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBtX2J1ZmZlci5h
cHBlbmQoYnVmZmVyKTsKICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
Km1fYnVmZmVyLmdldCgpKTsKIH0KIAotY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKK2Ns
YXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXImLCBSZXNvdXJjZVJlcXVlc3QmJik7CiAKIHByaXZhdGU6CiAgICAgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAg
ICAgOiBtX3BhcmVudChwYXJlbnQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVxdWVzdC51cmwo
KS5wcm90b2NvbElzRGF0YSgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAg
aWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBE
YXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewotICAgICAgICBtX3Jlc3Bv
bnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpy
ZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
cmVzdWx0LT5kYXRhKSk7Ci0gICAgfQotCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9idWZmZXIgfHwgbV9yZXNwb25zZS5p
c051bGwoKSkgeworICAgICAgICAvLyBkYXRhIFVSTHMgY2FuIGVuZCB1cCBiZWluZyB1bnJlYXNv
bmFibHkgYmlnIHNvIHdlIHdhbnQgdG8gYXZvaWQgaGF2aW5nIHRvIGNhbGwgaXNvbGF0ZWRDb3B5
KCkgaGVyZSB3aGVuIHBhc3NpbmcgdGhlIFVSTCBTdHJpbmcgdG8gdGhlIGxvYWRpbmcgdGhyZWFk
LgorICAgICAgICBhdXRvIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3Bv
bnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fcGFyZW50
Lm1fdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwYXJlbnQgPSBSZWYgeyBtX3BhcmVudCB9
LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUo
KS5pc29sYXRlZENvcHkoKSwgc3RhdHVzID0gIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIGNv
bnRlbnRSYW5nZSA9IHJlc3BvbnNlLmNvbnRlbnRSYW5nZSgpXSB7CisKKyAgICAgICAgICAgIGlm
IChtX3BhcmVudC5tX2RhdGFVUkxNZWRpYUxvYWRlci5nZXQoKSAhPSB0aGlzKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKG1fcGFyZW50LnJlc3BvbnNlUmVjZWl2
ZWQobWltZVR5cGUsIHN0YXR1cywgY29udGVudFJhbmdlLCBidWZmZXItPnNpemUoKSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAobV9wYXJlbnQubmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKGJ1ZmZlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKKyAgICAgICAgfSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9wYXJlbnQubV90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBh
cmVudCA9IFJlZiB7IG1fcGFyZW50IH1dIHsKKyAgICAgICAgICAgIGlmIChtX3BhcmVudC5tX2Rh
dGFVUkxNZWRpYUxvYWRlci5nZXQoKSAhPSB0aGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIG1fcGFyZW50LmxvYWRGYWlsZWQoUmVzb3VyY2VFcnJvcihSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9wYXJlbnQucmVzcG9uc2VSZWNlaXZlZChtX3Jlc3BvbnNlKTsKLSAgICAgICAgaWYg
KCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3BhcmVudC5uZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhp
cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQo
KTsKLSAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCi1SZWY8V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyPiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0ICphdlJlcXVlc3QpCitSZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QsIFdURjo6
V29ya1F1ZXVlJiB0YXJnZXRRdWV1ZSkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0KTsKICAgICBB
U1NFUlQocGFyZW50KTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIocGFyZW50LCBhdlJlcXVlc3QpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIocGFyZW50LCBhdlJlcXVlc3QsIHRhcmdldFF1ZXVlKSk7
CiB9CiAKLVdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCwgV1RG
OjpXb3JrUXVldWUmIHRhcmdldFF1ZXVlKQogICAgIDogbV9wYXJlbnQocGFyZW50KQogICAgICwg
bV9hdlJlcXVlc3QoYXZSZXF1ZXN0KQorICAgICwgbV90YXJnZXRRdWV1ZSh0YXJnZXRRdWV1ZSkK
IHsKIH0KIAogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjp+V2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyKCkKIHsKLSAgICBzdG9wTG9hZGluZygpOwogfQogCiB2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKIHsKKyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgbWFpbiB0
aHJlYWQsIGJlZm9yZSBhbnkgbG9hZGVycyBhcmUgY3JlYXRlZC4KICAgICBpZiAobV9kYXRhVVJM
TWVkaWFMb2FkZXIgfHwgbV9yZXNvdXJjZU1lZGlhTG9hZGVyIHx8IG1fcGxhdGZvcm1NZWRpYUxv
YWRlciB8fCAhbV9wYXJlbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzEzLDQ5ICszMjcsNTYg
QEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgW21f
YXZSZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6MF07CiB9CiAKKy8vIE5vIGNvZGUgYWNj
ZXNzaW5nIGB0aGlzYCBzaG91bGQgZXZlciBiZSB1c2VkIGFmdGVyIGNhbGxpbmcgc3RvcExvYWRp
bmcoKS4KIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZygpCiB7Cisg
ICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAgICAgbV9kYXRhVVJM
TWVkaWFMb2FkZXIgPSBudWxscHRyOwogICAgIG1fcmVzb3VyY2VNZWRpYUxvYWRlciA9IG51bGxw
dHI7CiAKICAgICBpZiAobV9wbGF0Zm9ybU1lZGlhTG9hZGVyKSB7CiAgICAgICAgIG1fcGxhdGZv
cm1NZWRpYUxvYWRlci0+c3RvcCgpOwotICAgICAgICBtX3BsYXRmb3JtTWVkaWFMb2FkZXIgPSBu
dWxscHRyOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKG1fcGxh
dGZvcm1NZWRpYUxvYWRlcildIHsgfSk7CisgICAgfQorICAgIGlmIChtX2F2UmVxdWVzdCkgewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBtX3BhcmVudCwgaW52YWxpZGF0ZWQg
PSBtX2ludmFsaWRhdGVkLCBhdlJlcXVlc3QgPSBXVEZNb3ZlKG1fYXZSZXF1ZXN0KV0gKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAoIWludmFsaWRhdGVkICYmIHBhcmVudCkKKyAgICAgICAg
ICAgICAgICBwYXJlbnQtPmRpZFN0b3BMb2FkaW5nUmVxdWVzdChhdlJlcXVlc3QuZ2V0KCkpOwor
ICAgICAgICB9KTsKICAgICB9Ci0gICAgaWYgKG1fcGFyZW50ICYmIG1fYXZSZXF1ZXN0KQotICAg
ICAgICBtX3BhcmVudC0+ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KG1fYXZSZXF1ZXN0LmdldCgpKTsK
IH0KIAogdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmludmFsaWRhdGUoKQogewotICAg
IGlmICghbV9wYXJlbnQpCi0gICAgICAgIHJldHVybjsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3Nl
cnRJc09uV29ya1F1ZXVlKCk7CiAKKyAgICBpZiAobV9pbnZhbGlkYXRlZCkKKyAgICAgICAgcmV0
dXJuOworICAgIG1faW52YWxpZGF0ZWQgPSB0cnVlOwogICAgIG1fcGFyZW50ID0gbnVsbHB0cjsK
KyAgICBzdG9wTG9hZGluZygpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5z
dG9wTG9hZGluZygpOwotICAgIH0pOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2Jv
b2wgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFBhcnNlZENvbnRlbnRSYW5nZSYgY29udGVu
dFJhbmdlLCBzaXplX3QgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogewotICAgIGludCBzdGF0dXMg
PSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElz
T25Xb3JrUXVldWUoKTsKKwogICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBzdGF0
dXMgPiAyOTkpKSB7CiAgICAgICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nV2l0aEVycm9y
OjBdOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IGF1dG8mIGNvbnRlbnRSYW5nZSA9IHJlc3BvbnNlLmNvbnRlbnRSYW5nZSgpOwogICAgIGlmIChj
b250ZW50UmFuZ2UuaXNWYWxpZCgpKQogICAgICAgICBtX3Jlc3BvbnNlT2Zmc2V0ID0gc3RhdGlj
X2Nhc3Q8TlNVSW50ZWdlcj4oY29udGVudFJhbmdlLmZpcnN0Qnl0ZVBvc2l0aW9uKCkpOwogCiAg
ICAgaWYgKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdDb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0KiBj
b250ZW50SW5mbyA9IFttX2F2UmVxdWVzdCBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSkgewot
ICAgICAgICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkp
OworICAgICAgICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKIAogICAg
ICAgICBbY29udGVudEluZm8gc2V0Q29udGVudFR5cGU6dXRpXTsKIAotICAgICAgICBbY29udGVu
dEluZm8gc2V0Q29udGVudExlbmd0aDpjb250ZW50UmFuZ2UuaXNWYWxpZCgpID8gY29udGVudFJh
bmdlLmluc3RhbmNlTGVuZ3RoKCkgOiByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKV07
CisgICAgICAgIFtjb250ZW50SW5mbyBzZXRDb250ZW50TGVuZ3RoOmNvbnRlbnRSYW5nZS5pc1Zh
bGlkKCkgPyBjb250ZW50UmFuZ2UuaW5zdGFuY2VMZW5ndGgoKSA6IGV4cGVjdGVkQ29udGVudExl
bmd0aF07CiAgICAgICAgIFtjb250ZW50SW5mbyBzZXRCeXRlUmFuZ2VBY2Nlc3NTdXBwb3J0ZWQ6
WUVTXTsKIAogICAgICAgICAvLyBEbyBub3Qgc2V0ICJFbnRpcmVMZW5ndGhBdmFpbGFibGVPbkRl
bWFuZCIgdG8gWUVTIHdoZW4gdGhlIGxvYWRlciBpcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
ci4KQEAgLTM2OCwxMiArMzg5LDE2IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlCiAgICAgICAg
IGlmICghW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XSkgewogICAgICAgICAgICAgW21fYXZSZXF1
ZXN0IGZpbmlzaExvYWRpbmddOwogICAgICAgICAgICAgc3RvcExvYWRpbmcoKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0K
IAogdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpOworCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEzOTg3NDE3PiBTZXQgdGhlIGNvbnRlbnRU
eXBlIG9mIHRoZSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0IHRvIGFuIGVtcHR5CiAgICAgLy8g
c3RyaW5nIHRvIHRyaWdnZXIgQVZBc3NldCdzIHBsYXlhYmxlIHZhbHVlIHRvIGNvbXBsZXRlIGxv
YWRpbmcuCiAgICAgaWYgKFttX2F2UmVxdWVzdCBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSAm
JiAhW1ttX2F2UmVxdWVzdCBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSBjb250ZW50VHlwZV0p
CkBAIC0zODUsMTUgKzQxMCwxOSBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9h
ZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiB7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0
SXNPbldvcmtRdWV1ZSgpOworCiAgICAgW21fYXZSZXF1ZXN0IGZpbmlzaExvYWRpbmddOwogICAg
IHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK2Jvb2wgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKKyAgICBtX3Rhcmdl
dFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsK
ICAgICBpZiAoIWRhdGFSZXF1ZXN0KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gQ2hlY2sgZm9yIHBvc3NpYmxlIHVuc2lnbmVkIG92ZXJmbG93LgogICAg
IEFTU0VSVChkYXRhUmVxdWVzdC5jdXJyZW50T2Zmc2V0ID49IGRhdGFSZXF1ZXN0LnJlcXVlc3Rl
ZE9mZnNldCk7CkBAIC00MjcsMTIgKzQ1NiwxNCBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZQog
CiAgICAgLy8gVGhlcmUgd2FzIG5vdCBlbm91Z2ggZGF0YSBpbiB0aGUgYnVmZmVyIHRvIHNhdGlz
ZnkgdGhlIGRhdGEgcmVxdWVzdC4KICAgICBpZiAocmVtYWluaW5nTGVuZ3RoKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChkYXRhUmVxdWVzdC5jdXJy
ZW50T2Zmc2V0ICsgZGF0YVJlcXVlc3QucmVxdWVzdGVkTGVuZ3RoID49IGRhdGFSZXF1ZXN0LnJl
cXVlc3RlZE9mZnNldCkgewogICAgICAgICBbbV9hdlJlcXVlc3QgZmluaXNoTG9hZGluZ107CiAg
ICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAKaW5kZXggYjdiMDdmZjE0NTRkNTYxYTMwMjEwOGFlMzIyOTFlOGY4MzQzN2JkOS4u
ZjM4NTE3YmQzMTMxZTgxNzUzNDAxNDQyYWM0MTgxMWIyYjlhZTMzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTExODEsNyArMTE4MSw4IEBAIGJv
b2wgd2ViS2l0U3JjV291bGRUYWludE9yaWdpbihXZWJLaXRXZWJTcmMqIHNyYywgY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKICAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNy
Yy0+cHJpdi0+ZGF0YU11dGV4IH07CiAKLSAgICBhdXRvKiBjYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQq
PihtZW1iZXJzLT5yZXNvdXJjZS0+Y2xpZW50KCkpOworICAgIGF1dG8gY2xpZW50ID0gbWVtYmVy
cy0+cmVzb3VyY2UtPmNsaWVudCgpOworICAgIGF1dG8qIGNhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQqPihjbGll
bnQuZ2V0KCkpOwogICAgIGZvciAoYXV0byYgcmVzcG9uc2VPcmlnaW4gOiBjYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudC0+c2VjdXJpdHlPcmlnaW5zKCkpIHsKICAgICAgICAgaWYgKCFvcmln
aW4uaXNTYW1lT3JpZ2luRG9tYWluKCpyZXNwb25zZU9yaWdpbikpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLmgKaW5kZXggMDBjMjAwMDI1MTU5OTFh
YzBkZDRlZDMwOTEzYjIyZGRjNjhhY2U2Zi4uODRmMTNmMjFmMmExYjFjMTZiM2YyMWJhY2ExMjA1
MTA3MzUyZDNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMzIsNiArMzMsOSBAQAogT0JKQ19DTEFTUyBOU1VSTFJl
cXVlc3Q7CiBPQkpDX0NMQVNTIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzazsKIAorbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBXb3JrUXVldWU7Cit9CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBQYXJzZWRSZXF1ZXN0UmFuZ2U7CkBAIC00MCw3ICs0NCw3IEBAIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiAKIGNsYXNzIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3IgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UmFuZ2VSZXNwb25zZUdlbmVyYXRvciwgV1RGOjpEZXN0cnVjdGlvblRo
cmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSYW5nZVJlc3BvbnNlR2VuZXJhdG9yPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3IpOyB9Cisg
ICAgc3RhdGljIFJlZjxSYW5nZVJlc3BvbnNlR2VuZXJhdG9yPiBjcmVhdGUoV1RGOjpXb3JrUXVl
dWUmIHRhcmdldFF1ZXVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJhbmdlUmVzcG9uc2VHZW5l
cmF0b3IodGFyZ2V0UXVldWUpKTsgfQogICAgIH5SYW5nZVJlc3BvbnNlR2VuZXJhdG9yKCk7CiAK
ICAgICBib29sIHdpbGxTeW50aGVzaXplUmFuZ2VSZXNwb25zZXMoV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrICosIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKQEAgLTQ4LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlVGFzayhXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKik7CiAKIHByaXZhdGU6Ci0gICAgUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcigpOworICAgIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoV1RGOjpXb3JrUXVldWUm
KTsKIAogICAgIHN0cnVjdCBEYXRhOwogICAgIGNsYXNzIE1lZGlhUmVzb3VyY2VDbGllbnQ7CkBA
IC01Nyw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXRhJik7CiAKICAgICBIYXNo
TWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERhdGE+PiBtX21hcDsKKyAgICBSZWY8V1RGOjpX
b3JrUXVldWU+IG1fdGFyZ2V0UXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMTk4MTRhMzY1YzlmNjYxYTIxYzIyOWFk
YmQwNDYxMWMyMDk0N2U2NC4uODdmYjFjMzI4ZTFiMmI3MzFiODgyOTE4OTc0YTE2MmQ4YmY1OTE0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNjIsMTkgKzYyLDE1IEBAIHN0
cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBSZWZQdHI8UGxhdGZvcm1N
ZWRpYVJlc291cmNlPiByZXNvdXJjZTsKIH07CiAKLVJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OlJh
bmdlUmVzcG9uc2VHZW5lcmF0b3IoKQorUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcihXVEY6OldvcmtRdWV1ZSYgdGFyZ2V0UXVldWUpCisgICAgOiBtX3Rhcmdl
dFF1ZXVlKHRhcmdldFF1ZXVlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CiAK
LVJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6On5SYW5nZVJlc3BvbnNlR2VuZXJhdG9yKCkKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotfQorUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6flJh
bmdlUmVzcG9uc2VHZW5lcmF0b3IoKSA9IGRlZmF1bHQ7CiAKIHN0YXRpYyBSZXNvdXJjZVJlc3Bv
bnNlIHN5bnRoZXNpemVkUmVzcG9uc2VGb3JSYW5nZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBv
cmlnaW5hbFJlc3BvbnNlLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHBhcnNlZFJlcXVlc3RS
YW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHRvdGFsQ29udGVudExlbmd0aCkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gYmVnaW4gPSBwYXJzZWRSZXF1ZXN0UmFu
Z2UuYmVnaW47CiAgICAgYXV0byBlbmQgPSBwYXJzZWRSZXF1ZXN0UmFuZ2UuZW5kOwogCkBAIC05
NSw3ICs5MSw3IEBAIHN0YXRpYyBSZXNvdXJjZVJlc3BvbnNlIHN5bnRoZXNpemVkUmVzcG9uc2VG
b3JSYW5nZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnCiAKIHZvaWQgUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2sp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3Nl
cnRJc09uV29ya1F1ZXVlKCk7CiAgICAgYXV0byogZGF0YSA9IG1fbWFwLmdldCh0YXNrLm9yaWdp
bmFsUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOwogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTA0LDggKzEwMCw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiAKIHZvaWQgUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNl
aXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVl
c3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5n
dGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQor
ICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBhdXRvIGJ1ZmZl
clNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5i
ZWdpbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTE1LDggKzExMCw4IEBAIHZvaWQgUmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChX
ZWJDb3JlTlNVCiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZm
ZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBh
dXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1
ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgdGFyZ2V0UXVldWUgPSBtX3RhcmdldFF1ZXVlXSB7CisgICAgICAg
IHRhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgICAgIGlmIChbdGFzayBz
dGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgaWYgKCF0YXNrRGF0YSkKQEAgLTEzNiwxNyArMTMxLDE1IEBAIHZvaWQgUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNl
aXZlZChXZWJDb3JlTlNVCiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5n
ZS5lbmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRy
aWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbZ2VuZXJhdG9yLCB0YXNrXSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRvcikKLSAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZW1vdmVUYXNrKHRhc2suZ2V0KCkpOwotICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yKQorICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+cmVtb3ZlVGFzayh0YXNrLmdldCgpKTsKICAgICAgICAgfQogICAgIH07CiAK
ICAgICBzd2l0Y2ggKHRhc2tEYXRhLT5yZXNwb25zZVN0YXRlKSB7CiAgICAgY2FzZSBEYXRhOjpU
YXNrRGF0YTo6UmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQ6IHsKICAgICAgICAgYXV0
byByZXNwb25zZSA9IHN5bnRoZXNpemVkUmVzcG9uc2VGb3JSYW5nZShkYXRhLm9yaWdpbmFsUmVz
cG9uc2UsIHJhbmdlLCBleHBlY3RlZENvbnRlbnRMZW5ndGgpOwotICAgICAgICBbdGFzayByZXNv
dXJjZTpudWxscHRyIHJlY2VpdmVkUmVzcG9uc2U6cmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6
W2dpdmVCeXRlc1RvVGFzayA9IFdURk1vdmUoZ2l2ZUJ5dGVzVG9UYXNrKSwgdGFza0RhdGEgPSBX
ZWFrUHRyIHsgdGFza0RhdGEgfSwgdGFzayA9IHJldGFpblB0cih0YXNrKV0gKFdlYkNvcmU6OlNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgW3Rhc2sg
cmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZFJlc3BvbnNlOnJlc3BvbnNlIGNvbXBsZXRpb25IYW5k
bGVyOltnaXZlQnl0ZXNUb1Rhc2sgPSBXVEZNb3ZlKGdpdmVCeXRlc1RvVGFzayksIHRhc2tEYXRh
ID0gV2Vha1B0ciB7IHRhc2tEYXRhIH0sIHRhc2sgPSByZXRhaW5QdHIodGFzayldIChXZWJDb3Jl
OjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmICh0YXNrRGF0YSkKICAgICAgICAgICAgICAgICB0YXNrRGF0YS0+cmVzcG9u
c2VTdGF0ZSA9IERhdGE6OlRhc2tEYXRhOjpSZXNwb25zZVN0YXRlOjpTZXNzaW9uQ2FsbGVkQ29t
cGxldGlvbkhhbmRsZXI7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hvdWxk
Q29udGludWVQb2xpY3lDaGVjazo6WWVzKQpAQCAtMTY3LDcgKzE2MCw2IEBAIHZvaWQgUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZl
ZChXZWJDb3JlTlNVCiAKIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXRhJiBkYXRhKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5Rmlu
aXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQog
ICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCkBAIC0xODAsNyArMTcyLDcgQEAg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29u
dGVudExlbmd0aEZyb21EYXRhKGNvbnMKIAogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKERhdGEmIGRhdGEpCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29y
a1F1ZXVlKCk7CiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRl
bnRMZW5ndGhGcm9tRGF0YShkYXRhKTsKIAogICAgIGZvciAoYXV0byYgcGFpciA6IGRhdGEudGFz
a0RhdGEpCkBAIC0xODksNyArMTgxLDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKERhdGEmIGRhdGEpCiAKIGJvb2wg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6d2lsbEhhbmRsZVJlcXVlc3QoV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrICp0YXNrLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVl
KCk7CiAgICAgYXV0byogZGF0YSA9IG1fbWFwLmdldChyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
Zyk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzQsMTMgKzIy
NiwxMSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbAogICAgIHsKLSAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBmaW5hbAogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJp
bmcpOwpAQCAtMjUyLDcgKzI0Miw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxvYWRGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFs
CiAgICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1f
Z2VuZXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGRhdGEgPSBtX2dl
bmVyYXRvci0+bV9tYXAudGFrZShtX3VybFN0cmluZyk7CkBAIC0yNjQsNyArMjUzLDYgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsCiAgICAgewotICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgICAgICBSZWZQdHIgZ2VuZXJhdG9yIHsgbV9nZW5lcmF0b3IuZ2V0
KCkgfTsKICAgICAgICAgaWYgKCFnZW5lcmF0b3IpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0y
ODIsNyArMjcwLDcgQEAgcHJpdmF0ZToKIAogYm9vbCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjp3
aWxsU3ludGhlc2l6ZVJhbmdlUmVzcG9uc2VzKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAq
dGFzaywgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3Rh
cmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgTlNVUkxSZXF1ZXN0ICpvcmln
aW5hbFJlcXVlc3QgPSB0YXNrLm9yaWdpbmFsUmVxdWVzdDsKICAgICBpZiAoIW9yaWdpbmFsUmVx
dWVzdC5VUkwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKaW5k
ZXggZWE0YTliZjI5NzgyOWViZDAyOTE0NzZjYmY4YTdlNTQ5NDcyMTI2ZC4uNGI2YTcwMWVlOWQw
NDkwYzhmNjdiZDE3OGRkOWVkMGM3ZWY3MGRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgIlJhbmdlUmVzcG9uc2VHZW5lcmF0b3IuaCIKICNpbXBv
cnQgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5o
PgorI2ltcG9ydCA8d3RmL0F0b21pY3MuaD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CkBAIC01
MCwxMiArNTEsMTQgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwotY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVZpZXc7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVt
IGNsYXNzIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgOiBib29sOwogfQogCituYW1lc3BhY2Ug
V1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30KKwogZW51bSBjbGFzcyBXZWJDb3JlTlNVUkxTZXNz
aW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0cyA6IHVpbnQ4X3QgewogICAgIFVua25vd24sCiAgICAg
UGFzcywKQEAgLTY0LDIwICs2NywyMiBAQCBlbnVtIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25D
T1JTQWNjZXNzQ2hlY2tSZXN1bHRzIDogdWludDhfdCB7CiAKIE5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCiAKKy8vIENyZWF0ZWQgb24gdGhlIG1haW4gdGhyZWFkOyB1c2VkIG9uIHRhcmdldFF1ZXVl
LgogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmpl
Y3QgewogQHByaXZhdGUKICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyPiBfbG9hZGVyOworICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gX3RhcmdldFF1ZXVl
OwogICAgIFdlYWtPYmpDUHRyPGlkPE5TVVJMU2Vzc2lvbkRlbGVnYXRlPj4gX2RlbGVnYXRlOwog
ICAgIFJldGFpblB0cjxOU09wZXJhdGlvblF1ZXVlPiBfcXVldWU7CiAgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBfc2Vzc2lvbkRlc2NyaXB0aW9uOwotICAgIEhhc2hTZXQ8UmV0YWluUHRyPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzaz4+IF9kYXRhVGFza3M7Ci0gICAgSGFzaFNldDxSZWZQdHI8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBfb3JpZ2luczsKICAgICBMb2NrIF9kYXRhVGFza3NM
b2NrOwotICAgIEJPT0wgX2ludmFsaWRhdGVkOworICAgIEhhc2hTZXQ8UmV0YWluUHRyPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzaz4+IF9kYXRhVGFza3M7IC8vIFByb3RlY3RlZCBieSBfZGF0
YVRhc2tzTG9jaworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4g
X29yaWdpbnM7IC8vIEFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICBXVEY6OkF0b21p
YzxCT09MPiBfaW52YWxpZGF0ZWQ7CiAgICAgTlNVSW50ZWdlciBfbmV4dFRhc2tJZGVudGlmaWVy
OwotICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IF9pbnRlcm5hbFF1ZXVlOworICAg
IFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gX2ludGVybmFsUXVldWU7CiAgICAgV2ViQ29yZU5TVVJM
U2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHMgX2NvcnNSZXN1bHRzOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yPiBfcmFuZ2VSZXNwb25zZUdlbmVyYXRvcjsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcj4gX3JhbmdlUmVzcG9u
c2VHZW5lcmF0b3I7IC8vIE9ubHkgY3JlYXRlZC9hY2Nlc3NlZCBvbiBfdGFyZ2V0UXVldWUKIH0K
IC0gKGlkKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlciYpbG9hZGVyIGRlbGVnYXRlOihpZDxOU1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+
KWRlbGVnYXRlIGRlbGVnYXRlUXVldWU6KE5TT3BlcmF0aW9uUXVldWUqKXF1ZXVlOwogQHByb3Bl
cnR5IChyZWFkb25seSwgcmV0YWluKSBOU09wZXJhdGlvblF1ZXVlICpkZWxlZ2F0ZVF1ZXVlOwpA
QCAtODUsNiArOTAsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNl
c3Npb24gOiBOU09iamVjdCB7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1VSTFNlc3Np
b25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uOwogQHByb3BlcnR5IChjb3B5KSBOU1N0cmlu
ZyAqc2Vzc2lvbkRlc2NyaXB0aW9uOwogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBkaWRQYXNz
Q09SU0FjY2Vzc0NoZWNrczsKK0Bwcm9wZXJ0eSAoYXNzaWduLCBhdG9taWMpIFdlYkNvcmVOU1VS
TFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzIGNvcnNSZXN1bHRzOwogLSAodm9pZClmaW5p
c2hUYXNrc0FuZEludmFsaWRhdGU7CiAtICh2b2lkKWludmFsaWRhdGVBbmRDYW5jZWw7CiAtIChC
T09MKXdvdWxkVGFpbnRPcmlnaW46KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJilvcmln
aW47CkBAIC0xMjAsMjAgKzEyNiwyMiBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNv
cmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiAtICh2b2lkKXNlbmRIMlBpbmc6KE5TVVJMICop
dXJsIHBvbmdIYW5kbGVyOih2b2lkICheKShOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBOU1Rp
bWVJbnRlcnZhbCBpbnRlcnZhbCkpcG9uZ0hhbmRsZXI7CiBAZW5kCiAKKy8vIENyZWF0ZWQgb24g
Y29tLmFwcGxlLmF2Zm91bmRhdGlvbi5jdXN0b211cmwubnN1cmxzZXNzaW9uCiBAaW50ZXJmYWNl
IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayA6IE5TT2JqZWN0IHsKLSAgICBXZWFrT2JqQ1B0
cjxXZWJDb3JlTlNVUkxTZXNzaW9uPiBfc2Vzc2lvbjsKKyAgICBXZWFrT2JqQ1B0cjxXZWJDb3Jl
TlNVUkxTZXNzaW9uPiBfc2Vzc2lvbjsgLy8gQWNjZXNzc2VkIGZyb20gb3BlcmF0aW9uIHF1ZXVl
LCBtYWluIGFuZCBsb2FkZXIgdGhyZWFkLiBNdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggT2JqLUMg
cHJvcGVydHkuCisgICAgUmVmUHRyPFdURjo6V29ya1F1ZXVlPiBfdGFyZ2V0UXVldWU7CiAgICAg
UmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gX3Jlc291cmNlOwotICAgIFJl
dGFpblB0cjxOU1VSTFJlc3BvbnNlPiBfcmVzcG9uc2U7CisgICAgUmV0YWluUHRyPE5TVVJMUmVz
cG9uc2U+IF9yZXNwb25zZTsgLy8gU2V0IG9uIG9wZXJhdGlvbiBxdWV1ZS4KICAgICBOU1VJbnRl
Z2VyIF90YXNrSWRlbnRpZmllcjsKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBfb3JpZ2lu
YWxSZXF1ZXN0OwotICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IF9jdXJyZW50UmVxdWVzdDsK
KyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBfb3JpZ2luYWxSZXF1ZXN0OyAvLyBTZXQgb24g
Y29uc3RydWN0aW9uLCBuZXZlciBtb2RpZmllZC4KKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0
PiBfY3VycmVudFJlcXVlc3Q7IC8vIFNldCBvbiBjb25zdHJ1Y3Rpb24sIG5ldmVyIG1vZGlmaWVk
LgogICAgIGludDY0X3QgX2NvdW50T2ZCeXRlc1JlY2VpdmVkOwogICAgIGludDY0X3QgX2NvdW50
T2ZCeXRlc1NlbnQ7CiAgICAgaW50NjRfdCBfY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1NlbmQ7CiAg
ICAgaW50NjRfdCBfY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmU7CiAgICAgTlNVUkxTZXNz
aW9uVGFza1N0YXRlIF9zdGF0ZTsKLSAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX2Vycm9yOwotICAg
IFJldGFpblB0cjxOU1N0cmluZz4gX3Rhc2tEZXNjcmlwdGlvbjsKKyAgICBSZXRhaW5QdHI8TlNF
cnJvcj4gX2Vycm9yOyAvLyBVbnVzZWQsIGFsd2F5cyBuaWwuCisgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBfdGFza0Rlc2NyaXB0aW9uOyAvLyBPbmx5IHNldCAvIHJlYWQgb24gdGhlIHVzZXIncyB0
aHJlYWQuCiAgICAgZmxvYXQgX3ByaW9yaXR5OwogfQogCkBAIC0xNDUsNyArMTUzLDcgQEAgV0VC
Q09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3Qgewog
QHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVzU2VudDsKIEBwcm9wZXJ0eSBpbnQ2NF90IGNv
dW50T2ZCeXRlc0V4cGVjdGVkVG9TZW5kOwogQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVz
RXhwZWN0ZWRUb1JlY2VpdmU7Ci1AcHJvcGVydHkgTlNVUkxTZXNzaW9uVGFza1N0YXRlIHN0YXRl
OworQHByb3BlcnR5IChhc3NpZ24sIGF0b21pYykgTlNVUkxTZXNzaW9uVGFza1N0YXRlIHN0YXRl
OwogQHByb3BlcnR5IChudWxsYWJsZSwgcmVhZG9ubHksIGNvcHkpIE5TRXJyb3IgKmVycm9yOwog
QHByb3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKnRhc2tEZXNjcmlwdGlvbjsKIEBw
cm9wZXJ0eSBmbG9hdCBwcmlvcml0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCAzYzhi
ZTA4YzI5MzRlNTRkYTNiNzQ5Y2E2ZGEzNGVkYTk2ZGM5YjhiLi45NDM2ZjU2MmM1ZTM4MWI2NjQ4
ZjgyZmVkNGI0NThhNGY3NWVkNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC0zNyw5
ICszNywxMSBAQAogI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW1wb3J0IDx3
dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvV29y
a1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV1RGOwogCiAjcHJhZ21hIG1hcmsgLSBQ
cml2YXRlIGRlY2xhcmF0aW9ucwogCkBAIC01Niw3ICs1OCw3IEBAIHN0YXRpYyBOU0RhdGUgKiBf
X251bGxhYmxlIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoTW9ub3RvbmljVGltZSB0aW1lKQogfQog
CiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIDog
TlNPYmplY3QKLS0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzOworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJp
Y3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3Mgb25UYXJnZXQ6KFdURjo6
V29ya1F1ZXVlKil3b3JrUXVldWU7CiBAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25s
eSkgTlNEYXRlICpmZXRjaFN0YXJ0RGF0ZTsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJl
YWRvbmx5KSBOU0RhdGUgKmRvbWFpbkxvb2t1cFN0YXJ0RGF0ZTsKIEBwcm9wZXJ0eSAobnVsbGFi
bGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKmRvbWFpbkxvb2t1cEVuZERhdGU7CkBAIC03OSwy
MSArODEsMjMgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZU5TVVJMU2Vzc2lvblRh
c2tUcmFuc2FjdGlvbk1ldHJpY3MgewogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBf
bWV0cmljczsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IF90YXJnZXRRdWV1ZTsKIH0KIAot
LSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYmKW1ldHJpY3MKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzIG9uVGFyZ2V0OihXVEY6OldvcmtRdWV1ZSop
cXVldWUKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHF1ZXVlLT5hc3NlcnRJ
c09uV29ya1F1ZXVlKCk7CisKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICBfbWV0cmljcyA9IG1ldHJpY3M7CisgICAgX21ldHJpY3MgPSBX
VEZNb3ZlKG1ldHJpY3MpOworICAgIF90YXJnZXRRdWV1ZSA9IHF1ZXVlOwogICAgIHJldHVybiBz
ZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVs
ZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlv
bk1ldHJpY3MuY2xhc3MsIHNlbGYpKQotICAgICAgICByZXR1cm47CisgICAgX3RhcmdldFF1ZXVl
LT5kaXNwYXRjaChbbWV0cmljcyA9IFdURk1vdmUoX21ldHJpY3MpXSB7IH0pOwogCiAgICAgW3N1
cGVyIGRlYWxsb2NdOwogfQpAQCAtMjE3LDI4ICsyMjEsMjkgQEAgLSAoQk9PTCltdWx0aXBhdGgK
IEBlbmQKIAogQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgOiBOU09i
amVjdAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYmKW1ldHJpY3M7CistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWV0cmljczoo
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpbWV0cmljcyBvblRhcmdldDoobm9ubnVsbCBX
VEY6OldvcmtRdWV1ZSAqKXRhcmdldFF1ZXVlOwogQHByb3BlcnR5IChjb3B5LCByZWFkb25seSkg
TlNBcnJheTxOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICo+ICp0cmFuc2FjdGlv
bk1ldHJpY3M7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNzaW9uVGFz
a01ldHJpY3MgewogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0
aW9uTWV0cmljcz4gX3RyYW5zYWN0aW9uTWV0cmljczsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVl
dWU+IF90YXJnZXRRdWV1ZTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6
KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3MKKy0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzIG9u
VGFyZ2V0Oihub25udWxsIFdURjo6V29ya1F1ZXVlICopdGFyZ2V0UXVldWUKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIHRhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVl
KCk7CiAKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICBfdHJhbnNhY3Rpb25NZXRyaWNzID0gYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Np
b25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNzOldURk1vdmUo
bWV0cmljcyldKTsKKyAgICBfdGFyZ2V0UXVldWUgPSB0YXJnZXRRdWV1ZTsKKyAgICBfdHJhbnNh
Y3Rpb25NZXRyaWNzID0gYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rp
b25NZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNzOldURk1vdmUobWV0cmljcykgb25UYXJn
ZXQ6dGFyZ2V0UXVldWVdKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWFsbG9j
CiB7Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFdl
YkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcy5jbGFzcywgc2VsZikpCi0gICAgICAgIHJldHVy
bjsKKyAgICBfdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFttZXRyaWNzID0gV1RGTW92ZShfdHJhbnNh
Y3Rpb25NZXRyaWNzKV0geyB9KTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTI0Niw2
ICsyNTEsOCBAQCAtICh2b2lkKWRlYWxsb2MKIEBkeW5hbWljIHRyYW5zYWN0aW9uTWV0cmljczsK
IC0gKE5TQXJyYXk8TlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyAqPiAqKXRyYW5z
YWN0aW9uTWV0cmljcwogeworICAgIC8vIFRPRE86IFRoaXMgaXMgbGlrZWx5IG5vdCB0aHJlYWQt
c2FmZS4gSG93IHRvIGhhbmRsZSB0aGlzIG9iamVjdD8KKyAgICAvLyBBY2Nlc3NlZCBmcm9tIGRl
bGVnYXRlIHRocmVhZC4KICAgICByZXR1cm4gQFsgKE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlv
bk1ldHJpY3MgKilzZWxmLT5fdHJhbnNhY3Rpb25NZXRyaWNzLmdldCgpIF07CiB9CiAKQEAgLTI2
Miw3ICsyNjksNyBAQCAtIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yJilyYW5nZVJl
c3BvbnNlR2VuZXJhdG9yOwogQGVuZAogCiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFzayAoKQotLSAoaWQpaW5pdFdpdGhTZXNzaW9uOihXZWJDb3JlTlNVUkxTZXNzaW9uICop
c2Vzc2lvbiBpZGVudGlmaWVyOihOU1VJbnRlZ2VyKWlkZW50aWZpZXIgcmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdDsKKy0gKGlkKWluaXRXaXRoU2Vzc2lvbjooV2ViQ29yZU5TVVJMU2Vz
c2lvbiAqKXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlmaWVyIHJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdGFyZ2V0UXVldWU6KFdURjo6V29ya1F1ZXVlKil0YXJn
ZXRRdWV1ZTsKIC0gKHZvaWQpX3Jlc3RhcnQ7CiAtICh2b2lkKV9jYW5jZWw7CiBAcHJvcGVydHkg
KGFzc2lnbikgV2ViQ29yZU5TVVJMU2Vzc2lvbiAqIF9OdWxsYWJsZSBzZXNzaW9uOwpAQCAtMjc0
LDIwICsyODEsMjYgQEAgTlNfQVNTVU1FX05PTk5VTExfRU5ECiAjcHJhZ21hIG1hcmsgLSBXZWJD
b3JlTlNVUkxTZXNzaW9uCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNzaW9uCitA
c3ludGhlc2l6ZSBjb3JzUmVzdWx0cyA9IF9jb3JzUmVzdWx0czsKKwogLSAoaWQpaW5pdFdpdGhS
ZXNvdXJjZUxvYWRlcjooUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJilsb2FkZXIgZGVsZWdh
dGU6KGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4paW5EZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVl
OihOU09wZXJhdGlvblF1ZXVlKilpblF1ZXVlCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKIAogICAgIEFTU0VSVChfY29yc1Jlc3VsdHMgPT0gV2ViQ29yZU5TVVJMU2Vzc2lv
bkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlVua25vd24pOwotICAgIEFTU0VSVCghX2ludmFsaWRh
dGVkKTsKKyAgICBBU1NFUlQoIV9pbnZhbGlkYXRlZC5sb2FkKCkpOwogCiAgICAgX2xvYWRlciA9
ICZsb2FkZXI7CisgICAgX3RhcmdldFF1ZXVlID0gX2xvYWRlci0+dGFyZ2V0UXVldWUoKTsKICAg
ICBzZWxmLmRlbGVnYXRlID0gaW5EZWxlZ2F0ZTsKICAgICBfcXVldWUgPSBpblF1ZXVlID8gaW5R
dWV1ZSA6IFtOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV07Ci0gICAgX2ludGVybmFsUXVldWUg
PSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZU5TVVJMU2Vzc2lv
biBfaW50ZXJuYWxRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpOwotICAgIF9yYW5nZVJl
c3BvbnNlR2VuZXJhdG9yID0gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Y3JlYXRlKCk7CisgICAg
X2ludGVybmFsUXVldWUgPSBXVEY6OldvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJDb3JlTlNVUkxTZXNz
aW9uIF9pbnRlcm5hbFF1ZXVlIik7CisgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25n
U2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAgICAgICBzdHJvbmdTZWxmLT5fcmFuZ2VSZXNw
b25zZUdlbmVyYXRvciA9IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmNyZWF0ZSgqc3Ryb25nU2Vs
Zi0+X3RhcmdldFF1ZXVlKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMjk2
LDE3ICszMDksMTkgQEAgLSAodm9pZClkZWFsbG9jCiB7CiAgICAgewogICAgICAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKF9kYXRhVGFza3NMb2NrKTsKLSAgICAgICAgZm9yIChhdXRvJiB0YXNrIDog
X2RhdGFUYXNrcykKLSAgICAgICAgICAgIFt0YXNrIHNldFNlc3Npb246bmlsXTsKKyAgICAgICAg
X3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbZGF0YVRhc2tzID0gV1RGTW92ZShfZGF0YVRhc2tzKSwg
cmFuZ2VSZXNwb25zZUdlbmVyYXRvciA9IFdURk1vdmUoX3JhbmdlUmVzcG9uc2VHZW5lcmF0b3Ip
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYmIHRhc2sgOiBkYXRhVGFza3Mp
CisgICAgICAgICAgICAgICAgW3Rhc2sgc2V0U2Vzc2lvbjpuaWxdOworICAgICAgICB9KTsKICAg
ICB9CisgICAgZW5zdXJlT25NYWluVGhyZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKF9sb2FkZXIpXSB7
IH0pOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbbG9hZGVyID0gV1RGTW92ZShfbG9hZGVyKV0g
ewotICAgIH0pOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAoaWQpY29weVdpdGhab25l
OihOU1pvbmUgKil6b25lCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBVTlVT
RURfUEFSQU0oem9uZSk7CiAgICAgcmV0dXJuIFtzZWxmIHJldGFpbl07CiB9CkBAIC0zMTUsNiAr
MzMwLDcgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAKIC0gKHZvaWQpdGFz
a0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzawogeworICAgIF90
YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIHRhc2suc2Vzc2lvbiA9IG5p
bDsKIAogICAgIHsKQEAgLTMyMiwxMiArMzM4LDExIEBAIC0gKHZvaWQpdGFza0NvbXBsZXRlZDoo
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzawogCiAgICAgICAgIEFTU0VSVChfZGF0
YVRhc2tzLmNvbnRhaW5zKHRhc2spKTsKICAgICAgICAgX2RhdGFUYXNrcy5yZW1vdmUodGFzayk7
Ci0gICAgICAgIGlmICghX2RhdGFUYXNrcy5pc0VtcHR5KCkgfHwgIV9pbnZhbGlkYXRlZCkKKyAg
ICAgICAgaWYgKCFfZGF0YVRhc2tzLmlzRW1wdHkoKSB8fCAhX2ludmFsaWRhdGVkLmxvYWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJM
U2Vzc2lvbj4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKLSAgICBbc2VsZiBhZGREZWxlZ2F0ZU9wZXJh
dGlvbjpbc3Ryb25nU2VsZl0geworICAgIFtzZWxmIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJv
bmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIGlmIChbc3Ryb25nU2VsZi5nZXQo
KS5kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGlkQmVj
b21lSW52YWxpZFdpdGhFcnJvcjopXSkKICAgICAgICAgICAgIFtzdHJvbmdTZWxmLmdldCgpLmRl
bGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkQmVj
b21lSW52YWxpZFdpdGhFcnJvcjpuaWxdOwogICAgIH1dOwpAQCAtMzM1LDkgKzM1MCw4IEBAIC0g
KHZvaWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzawog
CiAtICh2b2lkKWFkZERlbGVnYXRlT3BlcmF0aW9uOihGdW5jdGlvbjx2b2lkKCk+JiYpZnVuY3Rp
b24KIHsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbj4gc3Ryb25nU2VsZiB7IHNl
bGYgfTsKICAgICBSZXRhaW5QdHI8TlNCbG9ja09wZXJhdGlvbj4gb3BlcmF0aW9uID0gW05TQmxv
Y2tPcGVyYXRpb24gYmxvY2tPcGVyYXRpb25XaXRoQmxvY2s6bWFrZUJsb2NrUHRyKFdURk1vdmUo
ZnVuY3Rpb24pKS5nZXQoKV07Ci0gICAgZGlzcGF0Y2hfYXN5bmMoX2ludGVybmFsUXVldWUuZ2V0
KCksIFtzdHJvbmdTZWxmLCBvcGVyYXRpb25dIHsKKyAgICBfaW50ZXJuYWxRdWV1ZS0+ZGlzcGF0
Y2goW3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIG9wZXJhdGlvbiA9IFdURk1vdmUob3Bl
cmF0aW9uKV0gewogICAgICAgICBbc3Ryb25nU2VsZi5nZXQoKS5kZWxlZ2F0ZVF1ZXVlIGFkZE9w
ZXJhdGlvbjpvcGVyYXRpb24uZ2V0KCldOwogICAgICAgICBbb3BlcmF0aW9uIHdhaXRVbnRpbEZp
bmlzaGVkXTsKICAgICB9KTsKQEAgLTM0NSwyMSArMzU5LDI0IEBAIC0gKHZvaWQpYWRkRGVsZWdh
dGVPcGVyYXRpb246KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgogCiAtICh2b2lkKXRhc2s6
KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqKXRhc2sgZGlkUmVjZWl2ZUNPUlNBY2Nlc3ND
aGVja1Jlc3VsdDooQk9PTClyZXN1bHQKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25X
b3JrUXVldWUoKTsKICAgICBVTlVTRURfUEFSQU0odGFzayk7CiAgICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIF9jb3JzUmVzdWx0cyA9IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tS
ZXN1bHRzOjpGYWlsOwotICAgIGVsc2UgaWYgKF9jb3JzUmVzdWx0cyAhPSBXZWJDb3JlTlNVUkxT
ZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0czo6RmFpbCkKLSAgICAgICAgX2NvcnNSZXN1bHRz
ID0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlBhc3M7CisgICAg
ICAgIHNlbGYuY29yc1Jlc3VsdHMgPSBXZWJDb3JlTlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNr
UmVzdWx0czo6RmFpbDsKKyAgICBlbHNlIGlmIChzZWxmLmNvcnNSZXN1bHRzICE9IFdlYkNvcmVO
U1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpGYWlsKQorICAgICAgICBzZWxmLmNv
cnNSZXN1bHRzID0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlBh
c3M7CiB9CiAKIC0gKHZvaWQpdGFzazooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFz
ayBkaWRSZWNlaXZlUmVzcG9uc2VGcm9tT3JpZ2luOihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYpb3JpZ2luCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7
CiAgICAgVU5VU0VEX1BBUkFNKHRhc2spOwogICAgIF9vcmlnaW5zLmFkZChXVEZNb3ZlKG9yaWdp
bikpOwogfQogCiAtIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yJilyYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7
CiAgICAgcmV0dXJuICpfcmFuZ2VSZXNwb25zZUdlbmVyYXRvcjsKIH0KIApAQCAtNDA2LDcgKzQy
Myw3IEBAIC0gKFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYpbG9hZGVyCiBAZHluYW1pYyBk
aWRQYXNzQ09SU0FjY2Vzc0NoZWNrczsKIC0gKEJPT0wpZGlkUGFzc0NPUlNBY2Nlc3NDaGVja3MK
IHsKLSAgICByZXR1cm4gX2NvcnNSZXN1bHRzID09IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNj
ZXNzQ2hlY2tSZXN1bHRzOjpQYXNzOworICAgIHJldHVybiBzZWxmLmNvcnNSZXN1bHRzID09IFdl
YkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpQYXNzOwogfQogCiAtIChC
T09MKXdvdWxkVGFpbnRPcmlnaW46KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luICYpb3Jp
Z2luCkBAIC00MjAsNyArNDM3LDcgQEAgLSAoQk9PTCl3b3VsZFRhaW50T3JpZ2luOihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiAmKW9yaWdpbgogCiAtICh2b2lkKWZpbmlzaFRhc2tzQW5k
SW52YWxpZGF0ZQogewotICAgIF9pbnZhbGlkYXRlZCA9IFlFUzsKKyAgICBfaW52YWxpZGF0ZWQu
c3RvcmUoWUVTKTsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoX2RhdGFUYXNr
c0xvY2spOwogICAgICAgICBpZiAoIV9kYXRhVGFza3MuaXNFbXB0eSgpKQpAQCAtNDk0LDEwICs1
MTEsMTAgQEAgLSAodm9pZClnZXRBbGxUYXNrc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNBcnJheTxfX2tpbmRvZiBOU1VSTFNlc3Npb24KIAogLSAoTlNVUkxTZXNzaW9uRGF0YVRh
c2sgKilkYXRhVGFza1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7Ci0gICAg
aWYgKF9pbnZhbGlkYXRlZCkKKyAgICBpZiAoX2ludmFsaWRhdGVkLmxvYWQoKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2sgYWxsb2NdIGluaXRXaXRoU2Vzc2lvbjpzZWxmIGlkZW50aWZpZXI6X25leHRU
YXNrSWRlbnRpZmllcisrIHJlcXVlc3Q6cmVxdWVzdF0pOworICAgIGF1dG8gdGFzayA9IGFkb3B0
TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgYWxsb2NdIGluaXRXaXRoU2Vzc2lvbjpz
ZWxmIGlkZW50aWZpZXI6X25leHRUYXNrSWRlbnRpZmllcisrIHJlcXVlc3Q6cmVxdWVzdCB0YXJn
ZXRRdWV1ZTpfdGFyZ2V0UXVldWUuZ2V0KCldKTsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIoX2RhdGFUYXNrc0xvY2spOwogICAgICAgICBfZGF0YVRhc2tzLmFkZCh0YXNrLmdl
dCgpKTsKQEAgLTUxNCw3ICs1MzEsNyBAQCAtICh2b2lkKXNlbmRIMlBpbmc6KE5TVVJMICopdXJs
IHBvbmdIYW5kbGVyOih2b2lkICheKShOU0Vycm9yICplcnJvciwgTlNUaW1lSW50ZQogewogICAg
IGNhbGxPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHVy
bCA9IHJldGFpblB0cih1cmwpLCBwb25nSGFuZGxlciA9IG1ha2VCbG9ja1B0cihwb25nSGFuZGxl
cildICgpIG11dGFibGUgewogCi0gICAgICAgIGlmIChfaW52YWxpZGF0ZWQpCisgICAgICAgIGlm
IChfaW52YWxpZGF0ZWQubG9hZCgpKQogICAgICAgICAgICAgcmV0dXJuIHBvbmdIYW5kbGVyKGFk
b3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNv
ZGU6TlNVUkxFcnJvclVua25vd24gdXNlckluZm86bmlsXSkuZ2V0KCksIDApOwogCiAgICAgICAg
IHNlbGYubG9hZGVyLnNlbmRIMlBpbmcodXJsLmdldCgpLCBbc2VsZiwgc3Ryb25nU2VsZiA9IFdU
Rk1vdmUoc3Ryb25nU2VsZiksIHBvbmdIYW5kbGVyID0gV1RGTW92ZShwb25nSGFuZGxlcildIChF
eHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmIHJlc3VsdCkgbXV0YWJsZSB7CkBAIC01
MjQsOCArNTQxLDEwIEBAIC0gKHZvaWQpc2VuZEgyUGluZzooTlNVUkwgKil1cmwgcG9uZ0hhbmRs
ZXI6KHZvaWQgKF4pKE5TRXJyb3IgKmVycm9yLCBOU1RpbWVJbnRlCiAgICAgICAgICAgICAgICAg
aW50ZXJ2YWwgPSByZXN1bHQudmFsdWUoKS52YWx1ZSgpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIGVycm9yID0gcmVzdWx0LmVycm9yKCk7Ci0gICAgICAgICAgICBbc2VsZiBh
ZGREZWxlZ2F0ZU9wZXJhdGlvbjpbcG9uZ0hhbmRsZXIgPSBXVEZNb3ZlKHBvbmdIYW5kbGVyKSwg
ZXJyb3IgPSBXVEZNb3ZlKGVycm9yKSwgaW50ZXJ2YWxdIHsKLSAgICAgICAgICAgICAgICBwb25n
SGFuZGxlcihlcnJvci5nZXQoKSwgaW50ZXJ2YWwpOworICAgICAgICAgICAgW3NlbGYgYWRkRGVs
ZWdhdGVPcGVyYXRpb246W3BvbmdIYW5kbGVyID0gV1RGTW92ZShwb25nSGFuZGxlciksIGVycm9y
ID0gV1RGTW92ZShlcnJvciksIGludGVydmFsXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwb25nSGFuZGxlciA9IFdURk1vdmUocG9uZ0hhbmRsZXIpLCBl
cnJvciA9IFdURk1vdmUoZXJyb3IpLCBpbnRlcnZhbF0geworICAgICAgICAgICAgICAgICAgICBw
b25nSGFuZGxlcihlcnJvci5nZXQoKSwgaW50ZXJ2YWwpOworICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgfV07CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNTk3LDkgKzYxNiwxMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tD
bGllbnQgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQorICAgIFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFza0NsaWVudChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRh
c2ssIFdURjo6V29ya1F1ZXVlJiB0YXJnZXQpCiAgICAgICAgIDogbV90YXNrKHRhc2spCisgICAg
ICAgICwgbV90YXJnZXRRdWV1ZSh0YXJnZXQpCiAgICAgeworICAgICAgICBtX3RhcmdldFF1ZXVl
LT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgfQogCiAgICAgdm9pZCBjbGVhclRhc2soKTsK
QEAgLTYxNCwxOSArNjM1LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBMb2NrIG1fdGFza0xvY2s7Ci0gICAgV2Vha09iakNQdHI8V2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2sgV1RGX0dVQVJERURfQllfTE9DSyhtX3Rhc2tM
b2NrKTsKKyAgICBXZWFrT2JqQ1B0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IG1fdGFz
azsgLy8gT25seSBhY2Nlc3NlZCBvbiB0YXJnZXQgcXVldWUuCisgICAgUmVmPFdURjo6V29ya1F1
ZXVlPiBtX3RhcmdldFF1ZXVlOwogfTsKIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQ6OmNsZWFyVGFzaygpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sg
fTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgbV90YXNr
ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6
OmRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5h
c3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsK
IApAQCAtNjM1LDggKzY1Niw4IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xp
ZW50OjpkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlCiAKIHZvaWQgV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVl
dWUoKTsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKIApAQCAtNjQ1LDcg
KzY2Niw3IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZXNwb25z
ZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYKIAogYm9vbCBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJ
c09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtNjU0LDcgKzY3NSw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xp
ZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAKIHZvaWQgV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJ
c09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIApAQCAt
NjYzLDIwICs2ODQsMTYgQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc28KIAogdm9pZCBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIExvY2tlciBsb2NrZXIgeyBt
X3Rhc2tMb2NrIH07CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwog
ICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV90YXNrIHJlc291cmNl
OiZyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0OnJlc3BvbnNlIHJlcXVlc3Q6V1RGTW92ZShyZXF1
ZXN0KSBjb21wbGV0aW9uSGFuZGxlcjogW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChhdXRvJiYgcmVxdWVzdCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3JlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwotICAgICAgICB9KTsK
LSAgICB9XTsKKyAgICBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0
OnJlc3BvbnNlIHJlcXVlc3Q6V1RGTW92ZShyZXF1ZXN0KSBjb21wbGV0aW9uSGFuZGxlcjpXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CiB9CiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgTG9ja2Vy
IGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29y
a1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIApAQCAtNjg1LDcg
KzcwMiw3IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjphY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlCiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIExvY2tlciBsb2NrZXIg
eyBtX3Rhc2tMb2NrIH07CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgp
OwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKQEAgLTY5NCw3ICs3MTEsNyBA
QCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cgogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBMb2NrZXIgbG9ja2Vy
IHsgbV90YXNrTG9jayB9OworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUo
KTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCkBAIC03MDYsMTIgKzcyMywx
MyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlzaGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzbwogI3ByYWdtYSBtYXJrIC0gV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2sKLS0gKGlkKWluaXRXaXRoU2Vzc2lvbjooV2ViQ29yZU5TVVJMU2Vzc2lvbiAqKXNlc3Np
b24gaWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlmaWVyIHJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QKKy0gKGlkKWluaXRXaXRoU2Vzc2lvbjooV2ViQ29yZU5TVVJMU2Vzc2lvbiAq
KXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlmaWVyIHJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3QgdGFyZ2V0UXVldWU6KFdURjo6V29ya1F1ZXVlKil0YXJnZXRRdWV1
ZQogewogICAgIHNlbGYudGFza0lkZW50aWZpZXIgPSBpZGVudGlmaWVyOwotICAgIHNlbGYuc2Vz
c2lvbiA9IHNlc3Npb247CiAgICAgc2VsZi5zdGF0ZSA9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVN1
c3BlbmRlZDsKICAgICBzZWxmLnByaW9yaXR5ID0gTlNVUkxTZXNzaW9uVGFza1ByaW9yaXR5RGVm
YXVsdDsKKyAgICBzZWxmLnNlc3Npb24gPSBzZXNzaW9uOworICAgIF90YXJnZXRRdWV1ZSA9IHRh
cmdldFF1ZXVlOwogCiAgICAgLy8gQ29yZU1lZGlhIHdpbGwgZXhwbGljaXRseSBhZGQgYSB1c2Vy
IGFnZW50IGhlYWRlci4gUmVtb3ZlIGlmIHByZXNlbnQuCiAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZVVSTFJlcXVlc3Q+IG11dGFibGVSZXF1ZXN0OwpAQCAtNzM2LDcgKzc1NCw3IEBAIC0gKGlkKWNv
cHlXaXRoWm9uZTooTlNab25lICopem9uZQogCiAtICh2b2lkKV9yZXN0YXJ0CiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVl
dWUoKTsKIAogICAgIFtzZWxmIF9jYW5jZWxdOwogCkBAIC03NDYsMjMgKzc2NCwyOCBAQCAtICh2
b2lkKV9yZXN0YXJ0CiAgICAgaWYgKFtzZWxmLnNlc3Npb24gcmFuZ2VSZXNwb25zZUdlbmVyYXRv
cl0ud2lsbEhhbmRsZVJlcXVlc3Qoc2VsZiwgc2VsZi5vcmlnaW5hbFJlcXVlc3QpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBfcmVzb3VyY2UgPSBzZWxmLnNlc3Npb24ubG9hZGVyLnJlcXVlc3RS
ZXNvdXJjZShzZWxmLm9yaWdpbmFsUmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
OjpMb2FkT3B0aW9uOjpEaXNhbGxvd0NhY2hpbmcpOwotICAgIGlmIChfcmVzb3VyY2UpIHsKLSAg
ICAgICAgX3Jlc291cmNlLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQoc2VsZikpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIEEgbmlsIHJldHVybiBmcm9tIHJlcXVlc3RSZXNvdXJjZSBtZWFucyB0aGUgbG9hZCB3YXMg
Y2FuY2VsbGVkIGJ5IGEgZGVsZWdhdGUgY2xpZW50Ci0gICAgW3NlbGYgX3Jlc291cmNlOm5pbCBs
b2FkRmluaXNoZWRXaXRoRXJyb3I6UmVzb3VyY2VFcnJvcihSZXNvdXJjZUVycm9yOjpUeXBlOjpD
YW5jZWxsYXRpb24pIG1ldHJpY3M6eyB9XTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtsb2FkZXIg
PSBSZWYgeyBzZWxmLnNlc3Npb24ubG9hZGVyIH0sIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2Vs
ZildICgpIG11dGFibGUgeworICAgICAgICBhdXRvIHJlc291cmNlID0gbG9hZGVyLT5yZXF1ZXN0
UmVzb3VyY2UoW3N0cm9uZ1NlbGYgb3JpZ2luYWxSZXF1ZXN0XSwgUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpEaXNhbGxvd0NhY2hpbmcpOworICAgICAgICBzdHJvbmdT
ZWxmLT5fdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtyZXNvdXJjZSA9IFdURk1vdmUocmVzb3VyY2Up
LCBzdHJvbmdTZWxmXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9yZXNv
dXJjZSA9IHJlc291cmNlOworICAgICAgICAgICAgaWYgKHJlc291cmNlKQorICAgICAgICAgICAg
ICAgIHJlc291cmNlLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2tDbGllbnQoc3Ryb25nU2VsZi5nZXQoKSwgKnN0cm9uZ1NlbGYtPl90YXJnZXRRdWV1
ZSkpKTsKKyAgICAgICAgICAgIGVsc2UgLy8gQSBuaWwgcmV0dXJuIGZyb20gcmVxdWVzdFJlc291
cmNlIG1lYW5zIHRoZSBsb2FkIHdhcyBjYW5jZWxsZWQgYnkgYSBkZWxlZ2F0ZSBjbGllbnQKKyAg
ICAgICAgICAgICAgICBbc3Ryb25nU2VsZiBfcmVzb3VyY2U6bmlsIGxvYWRGaW5pc2hlZFdpdGhF
cnJvcjpSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbikgbWV0
cmljczogeyB9XTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIC0gKHZvaWQpX2NhbmNlbAog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJ
c09uV29ya1F1ZXVlKCk7CisKICAgICBpZiAoX3Jlc291cmNlKSB7Ci0gICAgICAgIF9yZXNvdXJj
ZS0+c3RvcCgpOwogICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChudWxscHRyKTsKLSAgICAg
ICAgX3Jlc291cmNlID0gbmlsOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXNvdXJjZSA9
IF9yZXNvdXJjZV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNvdXJjZS0+c3RvcCgpOwor
ICAgICAgICB9KTsKKyAgICAgICAgLy8gVE9ETzogU2hvdWxkIF9yZXNvdXJjZSBzaG91bGQgYmUg
c2V0IHRvIG5pbCA/CiAgICAgfQogICAgIGlmIChhdXRvICpzZXNzaW9uID0gc2VsZi5zZXNzaW9u
KQogICAgICAgICBbc2Vzc2lvbiByYW5nZVJlc3BvbnNlR2VuZXJhdG9yXS5yZW1vdmVUYXNrKHNl
bGYpOwpAQCAtNzg5LDYgKzgxMiw3IEBAIC0gKE5TVVJMUmVxdWVzdCAqKWN1cnJlbnRSZXF1ZXN0
CiAKIC0gKE5TRXJyb3IgKillcnJvcgogeworICAgIC8vIFRPRE86IF9lcnJvciBpcyBuZXZlciBz
ZXQgYW5kIGlzIGFsd2F5cyBuaWwuCiAgICAgcmV0dXJuIGFkb3B0TlMoW19lcnJvciBjb3B5XSku
YXV0b3JlbGVhc2UoKTsKIH0KIApAQCAtODA0LDEyICs4MjgsMTYgQEAgLSAodm9pZClzZXRUYXNr
RGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24KIAogLSAoV2ViQ29yZU5TVVJMU2Vz
c2lvbiAqKXNlc3Npb24KIHsKLSAgICByZXR1cm4gX3Nlc3Npb24uZ2V0KCkuZ2V0KCk7CisgICAg
QHN5bmNocm9uaXplZChzZWxmKSB7CisgICAgICAgIHJldHVybiBfc2Vzc2lvbi5nZXQoKS5hdXRv
cmVsZWFzZSgpOworICAgIH0KIH0KIAogLSAodm9pZClzZXRTZXNzaW9uOihXZWJDb3JlTlNVUkxT
ZXNzaW9uICopc2Vzc2lvbgogewotICAgIF9zZXNzaW9uID0gc2Vzc2lvbjsKKyAgICBAc3luY2hy
b25pemVkKHNlbGYpIHsKKyAgICAgICAgX3Nlc3Npb24gPSBzZXNzaW9uOworICAgIH0KIH0KIAog
LSAoTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCkBAIC04MjIsNyArODUwLDcgQEAgLSAodm9pZClj
YW5jZWwKICAgICBpZiAoc2VsZi5zdGF0ZSA9PSBOU1VSTFNlc3Npb25UYXNrU3RhdGVDb21wbGV0
ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBzZWxmLnN0YXRlID0gTlNVUkxTZXNzaW9uVGFza1N0
YXRlQ2FuY2VsaW5nOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZildIHsKKyAgICBfdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRTZWxm
ID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIF9jYW5jZWxdOwog
ICAgICAgICBbcHJvdGVjdGVkU2VsZiBfcmVzb3VyY2U6bnVsbHB0ciBsb2FkRmluaXNoZWRXaXRo
RXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VS
TEVycm9yQ2FuY2VsbGVkIHVzZXJJbmZvOm5pbF0gbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3Mg
eyB9XTsKICAgICB9KTsKQEAgLTgzMCw3ICs4NTgsNyBAQCAtICh2b2lkKWNhbmNlbAogCiAtICh2
b2lkKXN1c3BlbmQKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0
YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4oc2VsZildIHsKKyAgICBfdGFyZ2V0
UXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFzaz4oc2VsZildIHsKICAgICAgICAgLy8gTlNVUkxTZXNzaW9uRGF0YVRhc2tz
IG11c3Qgc3RhcnQgb3ZlciBhZnRlciBzdXNwZW5kaW5nLCBzbyB3aGlsZQogICAgICAgICAvLyB3
ZSBjb3VsZCBkZWZlciBsb2FkaW5nIGF0IHRoaXMgcG9pbnQsIGluc3RlYWQgY2FuY2VsIGFuZCBy
ZXN0YXJ0CiAgICAgICAgIC8vIHVwb24gcmVzdW1lIHNvIGFzIHRvIGFkaGVyZSB0byBOU1VSTFNl
c3Npb25EYXRhVGFzayBzZW1hbnRpY3MuCkBAIC04NDEsNyArODY5LDcgQEAgLSAodm9pZClzdXNw
ZW5kCiAKIC0gKHZvaWQpcmVzdW1lCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
U2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNlbGYpXSB7Cisg
ICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNlbGYpXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRT
ZWxmLmdldCgpLnN0YXRlICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVN1c3BlbmRlZCkKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtODUyLDkgKzg4MCwxMSBAQCAtICh2b2lkKXJlc3VtZQogCiAt
ICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpICYmIF9yZXNvdXJjZSkg
ewotICAgICAgICBpZiAoYXV0byogY2xpZW50ID0gX3Jlc291cmNlLT5jbGllbnQoKSkKLSAgICAg
ICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudCo+KGNs
aWVudCktPmNsZWFyVGFzaygpOworICAgIGlmIChfcmVzb3VyY2UpIHsKKyAgICAgICAgX3Rhcmdl
dFF1ZXVlLT5kaXNwYXRjaChbY2xpZW50ID0gX3Jlc291cmNlLT5jbGllbnQoKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoY2xpZW50KQorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudCo+KGNsaWVudC5nZXQoKSktPmNsZWFy
VGFzaygpOworICAgICAgICB9KTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcmVzb3VyY2Ug
PSBXVEZNb3ZlKF9yZXNvdXJjZSldIHsgfSk7CiAgICAgfQogCkBAIC04NzMsNiArOTAzLDcgQEAg
LSAoTlNEaWN0aW9uYXJ5ICopX3RpbWluZ0RhdGEKIAogLSAodm9pZClyZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZyli
eXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRl
c1RvQmVTZW50CiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNv
dXJjZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVzU2VudCk7CiAgICAgVU5VU0VEX1BBUkFNKHRv
dGFsQnl0ZXNUb0JlU2VudCk7CkBAIC04ODEsOSArOTEyLDEwIEBAIC0gKHZvaWQpcmVzb3VyY2U6
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25n
IGxvbmcpCiAKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29t
cGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkQ29udGludWVQb2xp
Y3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2Vy
dElzT25Xb3JrUXVldWUoKTsKICAgICBBU1NFUlQocmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrIHx8IHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291
cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlIHx8IHJlc3BvbnNlLnNvdXJjZSgpID09IFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlQWZ0ZXJWYWxpZGF0aW9uIHx8IHJlc3Bv
bnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtlcik7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9y
ZXNvdXJjZSk7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIFtzZWxmLnNlc3Np
b24gdGFzazpzZWxmIGRpZFJlY2VpdmVSZXNwb25zZUZyb21PcmlnaW46U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShyZXNwb25zZS51cmwoKSldOwogICAgIFtzZWxmLnNlc3Npb24gdGFzazpzZWxmIGRp
ZFJlY2VpdmVDT1JTQWNjZXNzQ2hlY2tSZXN1bHQ6cmVzb3VyY2UgPyByZXNvdXJjZS0+ZGlkUGFz
c0FjY2Vzc0NvbnRyb2xDaGVjaygpIDogWUVTXTsKICAgICBzZWxmLmNvdW50T2ZCeXRlc0V4cGVj
dGVkVG9SZWNlaXZlID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC04OTMs
OCArOTI1LDkgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBSZXNvdXIKICAgICAgICAgX3Jlc291cmNlID0g
bnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVl
UG9saWN5Q2hlY2s6Olllcyk7CiAgICAgfQotICAgIAorCiAgICAgUmV0YWluUHRyPFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKKyAgICAvLyBBY2Nlc3Mg
dG8gc2VsZi5zZXNzaW9uIGlzbid0IHRocmVhZC1zYWZlIDsgd2Vhay1wb2ludGVyIGFjcm9zcyB0
aHJlYWQuCiAgICAgaWYgKCFzZWxmLnNlc3Npb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpObyk7CiAgICAgW3NlbGYuc2Vzc2lv
biBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiwgc3Ryb25nUmVzcG9uc2UsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewpA
QCAtOTAyLDE0ICs5MzUsMTQgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBSZXNvdXIKIAogICAgICAgICBp
ZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Np
b25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAg
ICAgaWYgKCFbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vz
c2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV0pIHsK
LSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICAg
ICAgc3Ryb25nU2VsZi0+X3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2VsZiwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVj
azo6WWVzKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgW2RhdGFEZWxlZ2F0ZSBVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJv
bmdTZWxmLmdldCgpLnNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopc3Ry
b25nU2VsZi5nZXQoKSBkaWRSZWNlaXZlUmVzcG9uc2U6c3Ryb25nUmVzcG9uc2UuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtzdHJvbmdTZWxmLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNw
b3NpdGlvbiBkaXNwb3NpdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtzdHJvbmdTZWxmLCBkaXNwb3NpdGlvbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBzdHJvbmdTZWxm
LT5fdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtzdHJvbmdTZWxmLCBkaXNwb3NpdGlvbiwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGRpc3Bvc2l0aW9uID09IE5TVVJMU2Vzc2lvblJlc3BvbnNlQ2Fu
Y2VsKQogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51
ZVBvbGljeUNoZWNrOjpObyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CkBAIC05MjMsMTggKzk1
NiwxOCBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFJlc291cgogCiAtIChCT09MKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKXJlc3BvbnNlCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09u
V29ya1F1ZXVlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJl
c291cmNlID09IF9yZXNvdXJjZSk7CiAKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCiAg
ICAgLy8gRklYTUU6IHJlbW92ZSBpZiA8cmRhcjovL3Byb2JsZW0vMjAwMDE5ODU+IGlzIGV2ZXIg
cmVzb2x2ZWQuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKIC0gKHZvaWQpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZXRhaW5QdHI8TlNE
YXRhPiYmKWRhdGEKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jl
c291cmNlKTsKLSAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdT
ZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0geworICAgIFtz
ZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIo
c2VsZiksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCku
Y291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gW2RhdGEgbGVuZ3RoXTsKICAgICAgICAgaWQ8TlNVUkxT
ZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURl
bGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChb
ZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRh
VGFzazpkaWRSZWNlaXZlRGF0YTopXSkKQEAgLTk0NCwxMSArOTc3LDEyIEBAIC0gKHZvaWQpcmVz
b3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZXRh
aW5QdHI8TlNEYXRhCiAKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzcG9u
c2UgcmVxdWVzdDooUmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNl
KTsKLSAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0g
cmV0YWluUHRyKHNlbGYpLCByZXNwb25zZSA9IHJldGFpblB0cihyZXNwb25zZS5uc1VSTFJlc3Bv
bnNlKCkpLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgW3NlbGYu
c2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgcmVzcG9uc2UgPSByZXRhaW5QdHIocmVzcG9uc2UubnNVUkxSZXNwb25zZSgpKSwgcmVxdWVz
dCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHRhcmdldFF1ZXVlID0gX3RhcmdldFF1ZXVlXSAoKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCFbcmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9u
c2UgY2xhc3NdXSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICB0YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVl
c3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVl
c3QpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTU2LDE0ICs5
OTAsMTQgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBSZXNvdXIKIAogICAgICAgICBpZDxOU1VSTFNlc3Np
b25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdh
dGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRh
RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOnRhc2s6d2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjopXSkg
ewotICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckJsb2NrID0gbWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShOU1VSTFJl
cXVlc3QgKm5ld1JlcXVlc3QpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGVuc3VyZU9uTWFp
blRocmVhZChbcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQmxvY2sgPSBtYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRhcmdldFF1ZXVl
ID0gV1RGTW92ZSh0YXJnZXRRdWV1ZSldKE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICAgICAgdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtyZXF1ZXN0ID0gUmVz
b3VyY2VSZXF1ZXN0IHsgbmV3UmVxdWVzdCB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRh
c2sgKilzdHJvbmdTZWxmLmdldCgpIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBV
UkxSZXNwb25zZSAqKXJlc3BvbnNlLmdldCgpIG5ld1JlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVl
c3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpIGNvbXBsZXRpb25I
YW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyQmxvY2suZ2V0KCldOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgeworICAgICAgICAgICAgdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtyZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXF1ZXN0KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtOTcyLDYgKzEwMDYs
NyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJl
Y2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJlc291cgogCiAtICh2b2lkKV9yZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6KE5TRXJyb3Ig
KillcnJvciBtZXRyaWNzOihjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MKIHsKKyAg
ICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBpZiAo
c2VsZi5zdGF0ZSA9PSBOU1VSTFNlc3Npb25UYXNrU3RhdGVDb21wbGV0ZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTk4MCw3ICsxMDE1LDcgQEAgLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOihOU0Vycm8KICAgICBS
ZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBzdHJvbmdTZWxmIHsgc2VsZiB9
OwogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uPiBzdHJvbmdTZXNzaW9uIHsgc2Vs
Zi5zZXNzaW9uIH07CiAgICAgUmV0YWluUHRyPE5TRXJyb3I+IHN0cm9uZ0Vycm9yIHsgZXJyb3Ig
fTsKLSAgICBhdXRvIHRhc2tNZXRyaWNzID0gYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb25U
YXNrTWV0cmljcyBhbGxvY10gX2luaXRXaXRoTWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MobWV0
cmljcyldKTsKKyAgICBhdXRvIHRhc2tNZXRyaWNzID0gYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNl
c3Npb25UYXNrTWV0cmljcyBhbGxvY10gX2luaXRXaXRoTWV0cmljczptZXRyaWNzLmlzb2xhdGVk
Q29weSgpIG9uVGFyZ2V0Ol90YXJnZXRRdWV1ZS5nZXQoKV0pOwogICAgIFtzZWxmLnNlc3Npb24g
YWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb24sIHN0cm9uZ0Vy
cm9yLCB0YXNrTWV0cmljcyA9IFdURk1vdmUodGFza01ldHJpY3MpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgaWQ8TlNVUkxTZXNzaW9uVGFza0RlbGVnYXRlPiBkZWxlZ2F0ZSA9IChpZDxOU1VSTFNl
c3Npb25UYXNrRGVsZWdhdGU+KXN0cm9uZ1Nlc3Npb24uZ2V0KCkuZGVsZWdhdGU7CiAKQEAgLTk5
MCw3ICsxMDI1LDcgQEAgLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOihOU0Vycm8KICAgICAgICAgaWYgKFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246dGFzazpkaWRDb21w
bGV0ZVdpdGhFcnJvcjopXSkKICAgICAgICAgICAgIFtkZWxlZ2F0ZSBVUkxTZXNzaW9uOihOU1VS
TFNlc3Npb24gKilzdHJvbmdTZXNzaW9uLmdldCgpIHRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNr
ICopc3Ryb25nU2VsZi5nZXQoKSBkaWRDb21wbGV0ZVdpdGhFcnJvcjpzdHJvbmdFcnJvci5nZXQo
KV07CiAKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgc3Ryb25nU2Vzc2lv
bl0geworICAgICAgICBzdHJvbmdTZWxmLT5fdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtzdHJvbmdT
ZWxmLCBzdHJvbmdTZXNzaW9uXSB7CiAgICAgICAgICAgICBbc3Ryb25nU2Vzc2lvbiB0YXNrQ29t
cGxldGVkOnN0cm9uZ1NlbGYuZ2V0KCldOwogICAgICAgICB9KTsKICAgICB9XTsKQEAgLTk5OCwx
NiArMTAzMywxOSBAQCAtICh2b2lkKV9yZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6KE5TRXJybwogCiAtICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZFdpdGhFcnJvcjooY29uc3QgUmVzb3VyY2VFcnJvciYpZXJyb3IKIHsKKyAgICBfdGFyZ2V0UXVl
dWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2Ug
bG9hZEZpbmlzaGVkV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKSBtZXRyaWNzOk5ldHdvcmtMb2Fk
TWV0cmljcyB7IH1dOwogfQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UqKXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFJlc291cmNlRXJyb3ImKWVy
cm9yCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgW3Nl
bGYgX3Jlc291cmNlOnJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjplcnJvci5uc0Vycm9y
KCkgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9XTsKIH0KIAogLSAodm9pZClyZXNvdXJj
ZUZpbmlzaGVkOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIG1ldHJpY3M6KGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpbWV0cmljcwogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0
SXNPbldvcmtRdWV1ZSgpOwogICAgIFtzZWxmIF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNo
ZWRXaXRoRXJyb3I6bmlsIG1ldHJpY3M6bWV0cmljc107CiB9CiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNzJhNDIyZDRhZWZkNjY1MWZmOWRjZjc4NDM3YzA2NDJiMmU1MTdkYi4uZTVlNjlhZWZiMDBm
NzRiNTk4NDE3NzU0YmQyNmU5NzQyOGZlZWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDUxLDggKzQ1
MSwxMSBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogCiBSZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIoKQogewotICAgIGlmICghbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcikKKyAgICBBU1NF
UlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBpZiAoIW1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIpIHsKICAgICAgICAgbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciA9IG1ha2VVbmlxdWU8
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI+KCk7CisgICAgICAgIG1fcmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXItPmluaXRpYWxpemVDb25uZWN0aW9uKCZjb25uZWN0aW9uKCkpOworICAgIH0K
IAogICAgIHJldHVybiAqbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNw
cAppbmRleCA3ZjUxMmM2YzExYThlNzEwOGNmMDA2MmI1ODRkMjdiNTg5MDhkMThmLi43MzM4YTNl
ZDEzZWIxM2Y5ZmFjNzliMDZjZGRiMmUzZGY3MjM5YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC01MSw3
ICs1MSw2IEBAIFJlbW90ZU1lZGlhUmVzb3VyY2U6OlJlbW90ZU1lZGlhUmVzb3VyY2UoUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXImIHJlbW90ZU1lZGlhCiAKIFJlbW90ZU1lZGlhUmVzb3VyY2U6
On5SZW1vdGVNZWRpYVJlc291cmNlKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsK
ICAgICBzdG9wKCk7CiAgICAgaWYgKCFtX3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKQogICAg
ICAgICByZXR1cm47CkBAIC03MiwxMiArNzEsMTIgQEAgYm9vbCBSZW1vdGVNZWRpYVJlc291cmNl
OjpkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCkgY29uc3QKIAogdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBib29sIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
aWYgKCFtX2NsaWVudCkKKyAgICBhdXRvIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpOworICAgIGlm
ICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9s
Q2hlY2sgPSBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrOwotICAgIG1fY2xpZW50LT5yZXNwb25z
ZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHNo
b3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
CisgICAgY2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSwgW3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvIHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKQogICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+c3RvcCgpOwogCkBAIC04NywzOSArODYsMzkgQEAgdm9pZCBS
ZW1vdGVNZWRpYVJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBib28KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpyZWRpcmVjdFJl
Y2VpdmVkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50
LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmIChhdXRvIGNsaWVudCA9IHRoaXMtPmNs
aWVudCgpKQorICAgICAgICBjbGllbnQtPnJlZGlyZWN0UmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUo
cmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBt
X2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsK
KyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5k
YXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCiB2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCiB7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVk
KCp0aGlzLCBkYXRhKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAg
ICAgICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEpOwogfQogCiB2b2lkIFJlbW90
ZU1lZGlhUmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKIHsKICAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxzZTsK
LSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5hY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoKnRoaXMsIGVycm9yKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQo
KSkKKyAgICAgICAgY2xpZW50LT5hY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoKnRoaXMsIGVycm9y
KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpsb2FkRmFpbGVkKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PmxvYWRGYWlsZWQoKnRoaXMsIGVycm9yKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5j
bGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBlcnJvcik7CiB9CiAK
IHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9hZEZpbmlzaGVkKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50
LT5sb2FkRmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOworICAgIGlmIChhdXRvIGNsaWVudCA9IHRo
aXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywgbWV0cmlj
cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGNjNzBkMWM0MTZiYjljM2M5YjUwYmI3OWIyNzVhMjNiYWI5YjQwZWYuLjdmOWZlNzI4MGI1
OWM2NGEzMjU5YTc1MDFiNmEzZTZiNzlhNTk0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTM4LDYgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBSZW1vdGVNZWRpYVJl
c291cmNlTG9hZGVyOjpSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyKFJlbW90ZU1lZGlhUGxheWVy
UHJveHkmIHJlbW90ZU1lZGlhUGxheWVyUHJveHkpCiAgICAgOiBtX3JlbW90ZU1lZGlhUGxheWVy
UHJveHkocmVtb3RlTWVkaWFQbGF5ZXJQcm94eSkKIHsKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9v
cCgpKTsKIH0KIAogUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcjo6flJlbW90ZU1lZGlhUmVzb3Vy
Y2VMb2FkZXIoKQpAQCAtNDYsNiArNDcsNyBAQCBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyOjp+
UmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcigpCiAKIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2U+IFJlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBMb2FkT3B0aW9ucyBvcHRpb25zKQogeworICAgIEFTU0VSVChpc01h
aW5SdW5Mb29wKCkpOwogICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNTQsNiArNTYsNyBAQCBSZWZQdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlPiBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoUmVz
b3VyYwogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXI6OnNlbmRIMlBpbmcoY29uc3Qg
VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3Vy
Y2VFcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgQVNTRVJUKGlzTWFpblJ1
bkxvb3AoKSk7CiAgICAgaWYgKCFtX3JlbW90ZU1lZGlhUGxheWVyUHJveHkpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChpbnRlcm5hbEVycm9yKHVybCkp
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IDQwZTM4MTNhNDhhYWI4MzcyMzc1MzI5
YmFjOTZhMTI2NjcwODc4ZTIuLjMyZTEyZjU3ZTQ0ZGVlYzNhMDViMjQ3OTQ3NmUwZmQ2YmQ4ZGMw
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNDEsOSArNDEsMjAgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IFJlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIoUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eSYpOwogICAgIH5SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyKCk7CiAKKyAgICBzdGF0aWMgUmVm
PFdURjo6V29ya1F1ZXVlPiBkZWZhdWx0UXVldWUoKQorICAgIHsKKyAgICAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
UmVmPFdURjo6V29ya1F1ZXVlPj4gbWVzc2FnZVF1ZXVlOworICAgICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbXSB7CisgICAgICAgICAgICBtZXNzYWdlUXVldWUuY29uc3RydWN0KFdvcmtR
dWV1ZTo6Y3JlYXRlKCJQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIiLCBXVEY6OldvcmtRdWV1
ZTo6UU9TOjpCYWNrZ3JvdW5kKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gbWVzc2Fn
ZVF1ZXVlLmdldCgpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIExvYWRPcHRpb25zKSBmaW5hbDsKICAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJM
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IHRh
cmdldFF1ZXVlKCkgZmluYWwgeyByZXR1cm4gZGVmYXVsdFF1ZXVlKCk7IH0KIAogICAgIFdlYWtQ
dHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXllclByb3h5OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IDAxYWViNDI3OThlOWFjYjEzYTk1ZDUxZWJj
YzYxM2NjYTY5MmNkNWEuLjliZTQ0ZjRjNjYwOTI5ZWE0YjVlNjIxNWQxZjAwODAzZGMyY2E3YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjgsOSArMjgsMTAgQEAKIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYVJlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAKQEAgLTM4LDEyICszOSwyNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLVJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcigpCitSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6UmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CitSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6
flJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKKyAgICAvLyBUT0RP
OiBXaGF0IGlzIHRoZSBiZXN0IHByYWN0aWNlIHRvIGNhbGwgdGhpcz8KKyAgICBpbml0aWFsaXpl
Q29ubmVjdGlvbihudWxscHRyKTsKIH0KIAotUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6On5S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiB7
CisgICAgaWYgKG1fY29ubmVjdGlvbiA9PSBjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZVdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisKKyAgICBtX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9u
OworCisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIFJlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXI6OmRlZmF1
bHRRdWV1ZSgpLCB0aGlzKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6
YWRkTWVkaWFSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciByZW1vdGVNZWRp
YVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFSZXNvdXJjZSYgcmVtb3RlTWVkaWFSZXNv
dXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKaW5kZXggMTNiNzZlODBhNDk4Yzk0NWUxYzQ2ZTkx
ZmQ4NDc5ODJiNWVkNzQxMS4uYmRjZGE3MWVkMjUwZDEyOTI0MWVlYjgxZmFiZjA3MWFlOWQ4YzE1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKQEAgLTUwLDE2ICs1MSwxOSBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2U7CiAKIGNsYXNzIFJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyCi0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
ICAgIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcigpOwogICAgIH5SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpOworICAg
IHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOworCisgICAgdm9pZCBpbml0aWFsaXplQ29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKIAogICAgIHZvaWQgYWRkTWVkaWFSZXNvdXJjZShSZW1v
dGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFSZXNvdXJjZSYpOwogICAgIHZv
aWQgcmVtb3ZlTWVkaWFSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcik7CiAK
LSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6V29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKIHByaXZhdGU6CkBAIC03Miw2ICs3
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogCiAgICAg
SGFzaE1hcDxSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFSZXNvdXJj
ZSo+IG1fcmVtb3RlTWVkaWFSZXNvdXJjZXM7CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggZWFkZDg0NzMwZjExYjc3M2IwMzUyZGJhYWZlOGRkYWNkYTg3NjA5My4uMThkYjk1NjViNDRl
ZjA2M2JlMTNkYmM1MjJkMTU3NzAxYTU0MGUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjAxLDE1ICsy
MDEsMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICBtX2NvcmVMb2FkZXItPmRpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5l
dHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9m
IHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJv
Y2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQg
ZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5M
SUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+
aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1f
Y29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFi
bGUgeworICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YSA9
IFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIpKSwgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRh
TGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCBhYzU0MjJmYzA2NzEwYmQwZTA4N2UwZjQ0MDllZDk0MDE3YzBjZjE2Li4xYTU0MGY5NzcxZmEw
MWM2MGZiZDU5ZDkzMTNmZDFhZWNmZjRlMzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTgxLDcgKzgxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9h
ZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxS
ZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlk
RmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
</data>
<flag name="commit-queue"
          id="476136"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449924</attachid>
            <date>2022-01-25 06:17:33 -0800</date>
            <delta_ts>2022-01-25 08:07:12 -0800</delta_ts>
            <desc>WIP4</desc>
            <filename>bug-235353-20220126011731.patch</filename>
            <type>text/plain</type>
            <size>96863</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyZDcxNWJjNGVmZThjOWU1ZWIxMTFl
N2MwNmViZjBmODQ4NjlmMjAuLjYwMTE4MWFjMTNjMjIzNzRlNWExZGExMTE0MDRhOGFlZWQxZmU5
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWV0YV0gUGVyZm9ybSBtZWRpYSBuZXR3b3JraW5n
IG9wZXJhdGlvbiBvZmYgdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUzNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWVCYXNlOjph
c3NlcnRJc09uV29ya1F1ZXVlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVl
dWVHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldv
cmtRdWV1ZSBjb25zdCk6CisKIDIwMjItMDEtMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgVG9sbEZyZWVCcmlkZ2luZy5oIHRvIFhjb2Rl
IHByb2plY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMjFhMTc2ZjdhM2M0YjRlYTkzOTdmZWUwNzI4ZDllYzY4OGE3
MjViOC4uZjAzYmFmOGZlNDZiZDA5MWI2NDNhZWQwMGFiZGE1NDc5OGI3N2UwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMS0xOSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIFttZXRhXSBQZXJmb3JtIG1lZGlhIG5ldHdvcmtpbmcgb3BlcmF0
aW9uIG9mZiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTM1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDIyLTAxLTE2ICBDYW1lcm9uIE1j
Q29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5zdXJlIGluIGZsaWdodCBs
YXllciB0cmFuc2FjdGlvbnMgZG9uJ3QgYWNjdW11bGF0ZSBmdXJ0aGVyIGNhbnZhcyBkcmF3aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCmluZGV4IDM2OGMwNjZkOGY5NmI0YmNlNzQzMTgyNTJlM2MwMjY2NjFkOGY2
OTcuLjY1OGRlNjk2ZjAxY2NlNTZiM2UzYjEyODRjMzg2NWEzMjNjNTM0MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1
ZS5oCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3Bh
dGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWUuZ2V0KCk7IH0KICNlbmRp
ZgogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXNzZXJ0SXNPbldvcmtRdWV1ZSgpIGNv
bnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7CiAgICAgICAg
IFNlcmlhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCBmOWY0
N2YxMWM3ODQ1ZDI3NWUxMWNmNzIwZDBhODU2MjU5Y2IyMjFjLi41MWI0YTM0NzQxMTExNDQ2ZjE0
ZDNlM2YyYzQ0NWQzOGJiYmJlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9X
b3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCkBAIC05Miw2ICs5MiwxMyBAQCB2b2lkIFdvcmtRdWV1ZUJhc2U6OnBsYXRmb3JtSW52
YWxpZGF0ZSgpCiB7CiB9CiAKK3ZvaWQgV29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpIGNvbnN0Cit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBkaXNwYXRjaF9hc3NlcnRfcXVl
dWUobV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKKyNlbmRpZgorfQorCiBXb3JrUXVldWU6OldvcmtR
dWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmIHF1ZXVlKQogICAgIDogV29ya1F1
ZXVlQmFzZShXVEZNb3ZlKHF1ZXVlKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dl
bmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtR
dWV1ZUdlbmVyaWMuY3BwCmluZGV4IGQyNTdkM2E3MjA0ZWZiMWNiM2E1ZDg5NTQ2MTBmMmIwMjdh
OGRlNTEuLjFiZWZjMjA4ZWM0NmFjYjBiNWRlZjkwMTBjNjQzNmIyOTRiYzM2MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcApAQCAtODUsNCArODUsOSBA
QCBSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3JrUXVldWUoKQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShSdW5Mb29wOjptYWluKCkpKTsKIH0KIAor
dm9pZCBXb3JrUXVldWVCYXNlOjphc3NlcnRJc09uV29ya1F1ZXVlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoJmN1cnJlbnQoKSA9PSBtX3J1bkxvb3ApOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS84MzkxMDAxMi5kaWZmIGIvU291cmNlL1dlYkNvcmUvODM5MTAwMTIuZGlmZgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYTlhNGU2Mzk0NTJmN2Q4YTc2MjgyOTRkNDRlNTJlM2UzOWI0YTliCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvODM5MTAwMTIuZGlmZgpAQCAtMCwwICsxLDgx
IEBACitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAoraW5kZXggZGU2ZGViZTJiZDRj
Li5jNjg0Yzg1NmZjODEgMTAwNjQ0CistLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKK0BA
IC0xMzkxLDEzICsxMzkxLDIzIEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9U
cmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRpbWUmIHByCisgdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6cmVzZXRDb21wbGV0ZWQoKQorIHsK
KyAgICAgbU51bUZyYW1lc0luQ29tcGxldGVCbG9jayA9IDA7CistICAgIG1fcGFja2V0RGVzY3Jp
cHRpb25zLmNsZWFyKCk7CisrICAgIG1fcGFja2V0U2l6ZXMuY2xlYXIoKTsKKysgICAgbV9wYWNr
ZXRUaW1pbmdzLmNsZWFyKCk7CisgICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgPSAwOwor
ICAgICBUcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKCk7CisgfQorIAorIHdlYm06OlN0YXR1cyBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3
ZWJtOjpSZWFkZXImIHJlYWRlciwgY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIHVpbnQ2
NF90KiBieXRlc1JlbWFpbmluZywgY29uc3QgQ01UaW1lJiBwcmVzZW50YXRpb25UaW1lLCBpbnQg
c2FtcGxlQ291bnQpCisgeworKyAgICBpZiAobV9wYWNrZXRUaW1pbmdzLnNpemUoKSkgeworKyAg
ICAgICAgYXV0byYgbGFzdFRpbWluZyA9IG1fcGFja2V0VGltaW5ncy5sYXN0KCk7CisrICAgICAg
ICBpZiAoUEFMOjpDTVRpbWVDb21wYXJlKFBBTDo6Q01UaW1lQWRkKGxhc3RUaW1pbmcuZHVyYXRp
b24sIGxhc3RUaW1pbmcucHJlc2VudGF0aW9uVGltZVN0YW1wKSwgcHJlc2VudGF0aW9uVGltZSkp
IHsKKysgICAgICAgICAgICAvLyBEaXNjb250aW51aXR5IGVuY291bnRlcmVkLCBlbWl0IHRoZSBw
cmV2aW91c2x5IGRlbXV4ZWQgc2FtcGxlcy4KKysgICAgICAgICAgICBjcmVhdGVTYW1wbGVCdWZm
ZXIobWV0YWRhdGEucG9zaXRpb24pOworKyAgICAgICAgICAgIHJlc2V0KCk7CisrICAgICAgICB9
CisrICAgIH0KKysKKyAgICAgYXV0byBzdGF0dXMgPSByZWFkRnJhbWVEYXRhKHJlYWRlciwgbWV0
YWRhdGEsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgaWYgKCFzdGF0dXMuY29tcGxldGVkX29rKCkp
CisgICAgICAgICByZXR1cm4gc3RhdHVzOworQEAgLTE0MDcsNyArMTQxNyw3IEBAIHdlYm06OlN0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1l
RGF0YSh3ZWJtOjpSZWFkCisgICAgIGlmIChtTnVtRnJhbWVzSW5Db21wbGV0ZUJsb2NrID4gbU1h
eEJsb2NrQnVmZmVyQ2FwYWNpdHkpCisgICAgICAgICBtTWF4QmxvY2tCdWZmZXJDYXBhY2l0eSA9
IG1OdW1GcmFtZXNJbkNvbXBsZXRlQmxvY2s7CisgCistICAgIGlmIChtX3BhY2tldERlc2NyaXB0
aW9ucy5pc0VtcHR5KCkpCisrICAgIGlmIChtX3BhY2tldFNpemVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgIG1fc2FtcGxlUHJlc2VudGF0aW9uVGltZSA9IHByZXNlbnRhdGlvblRpbWU7CisgCisgICAg
IGlmICghZm9ybWF0RGVzY3JpcHRpb24oKSkgeworQEAgLTE0ODQsMTEgKzE0OTQsMTMgQEAgd2Vi
bTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1l
RnJhbWVEYXRhKHdlYm06OlJlYWQKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBtX3BhY2tl
dERlc2NyaXB0aW9ucy5hcHBlbmQoeyBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2N1cnJlbnRQYWNr
ZXRCeXRlT2Zmc2V0KSwgMCwgc3RhdGljX2Nhc3Q8VUludDMyPigqbV9jb21wbGV0ZVBhY2tldFNp
emUpIH0pOworKyAgICBtX3BhY2tldFNpemVzLmFwcGVuZCgqbV9jb21wbGV0ZVBhY2tldFNpemUp
OworKyAgICBtX3BhY2tldFRpbWluZ3MuYXBwZW5kKHsgbV9wYWNrZXREdXJhdGlvbiwgcHJlc2Vu
dGF0aW9uVGltZSwgUEFMOjprQ01UaW1lSW52YWxpZCB9KTsKKyAgICAgbV9jdXJyZW50UGFja2V0
Qnl0ZU9mZnNldCArPSAqbV9jb21wbGV0ZVBhY2tldFNpemU7CisgICAgIG1fY29tcGxldGVQYWNr
ZXRTaXplID0gc3RkOjpudWxsb3B0OworIAorICAgICBhdXRvIHNhbXBsZUR1cmF0aW9uID0gUEFM
OjpDTVRpbWVHZXRTZWNvbmRzKFBBTDo6Q01UaW1lU3VidHJhY3QocHJlc2VudGF0aW9uVGltZSwg
bV9zYW1wbGVQcmVzZW50YXRpb25UaW1lKSkgKyBQQUw6OkNNVGltZUdldFNlY29uZHMobV9wYWNr
ZXREdXJhdGlvbikgKiBzYW1wbGVDb3VudDsKKysKKyAgICAgaWYgKHNhbXBsZUR1cmF0aW9uID49
IG1fbWluaW11bVNhbXBsZUR1cmF0aW9uKSB7CisgICAgICAgICBjcmVhdGVTYW1wbGVCdWZmZXIo
bWV0YWRhdGEucG9zaXRpb24pOworICAgICAgICAgcmVzZXQoKTsKK0BAIC0xNTAwLDExICsxNTEy
LDExIEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0
YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCisgCisgdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCisgeworLSAgICBpZiAobV9wYWNrZXREZXNj
cmlwdGlvbnMuaXNFbXB0eSgpKQorKyAgICBpZiAobV9wYWNrZXRTaXplcy5pc0VtcHR5KCkpCisg
ICAgICAgICByZXR1cm47CisgCisgICAgIENNU2FtcGxlQnVmZmVyUmVmIHJhd1NhbXBsZUJ1ZmZl
ciA9IG51bGxwdHI7CistICAgIGF1dG8gZXJyID0gUEFMOjpDTUF1ZGlvU2FtcGxlQnVmZmVyQ3Jl
YXRlUmVhZHlXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fY29t
cGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgbV9wYWNr
ZXREZXNjcmlwdGlvbnMuc2l6ZSgpLCBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWUsIG1fcGFja2V0
RGVzY3JpcHRpb25zLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CisrICAgIGF1dG8gZXJyID0g
UEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fY29t
cGxldGVCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgbV9wYWNr
ZXRTaXplcy5zaXplKCksIDEsIG1fcGFja2V0VGltaW5ncy5kYXRhKCksIG1fcGFja2V0U2l6ZXMu
c2l6ZSgpLCBtX3BhY2tldFNpemVzLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CisgICAgIGlm
IChlcnIpIHsKKyAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQXVkaW9T
YW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwg
ZXJyKTsKKyAgICAgICAgIHJldHVybjsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKK2lu
ZGV4IDQ1NWNmYjU4MDQ2Yy4uNWEzNzYzNTAwN2NmIDEwMDY0NAorLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmgKK0BAIC0yNDIsNyArMjQyLDggQEAgcHVibGljOgorICAgICAgICAgc2l6ZV90IG1f
Y3VycmVudFBhY2tldEJ5dGVPZmZzZXQgeyAwIH07CisgICAgICAgICB1aW50OF90IG1fZnJhbWVz
UGVyUGFja2V0IHsgMCB9OworICAgICAgICAgU2Vjb25kcyBtX2ZyYW1lRHVyYXRpb24geyAwX3Mg
fTsKKy0gICAgICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX3BhY2tl
dERlc2NyaXB0aW9uczsKKysgICAgICAgIFZlY3RvcjxzaXplX3Q+IG1fcGFja2V0U2l6ZXM7Cisr
ICAgICAgICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiBtX3BhY2tldFRpbWluZ3M7CisgICAg
ICAgICBzaXplX3QgbU51bUZyYW1lc0luQ29tcGxldGVCbG9jayB7IDAgfTsKKyAgICAgICAgIC8v
IEZJWE1FOiAwLjUgLSAxLjAgc2Vjb25kcyBpcyBhIGJldHRlciBkdXJhdGlvbiBwZXIgc2FtcGxl
IGJ1ZmZlciwgYnV0IHVzZSAyIHNlY29uZHMgc28gYXQgbGVhc3QgdGhlIGZpcnN0CisgICAgICAg
ICAvLyBzYW1wbGUgYnVmZmVyIHdpbGwgcGxheSB1bnRpbCB3ZSBmaXggTWVkaWFTYW1wbGVDdXJz
b3I6OmNyZWF0ZVNhbXBsZUJ1ZmZlciB0byBkZWFsIHdpdGggYGVuZEN1cnNvcmAuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWExN2E3MGZh
NThjNzIyOGY2Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZS4uMjY4YjgxMDkxNDMyZmJkZTU4Mjg4YTgx
MGMwMDg3M2ZkNjEyNWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmNwcApAQCAtMTgzLDIwICsxODMsMjEgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpy
ZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VS
ZXMKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1l
c3NhZ2UoIkNyb3NzLW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1P
cmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fbG9hZGVyLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOwogICAgICAgICBtX2RpZFBhc3NB
Y2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAg
ICAgICAgbV9jbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywgUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgY29uc29s
ZU1lc3NhZ2UuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50
KCkpCisgICAgICAgICAgICBjbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywg
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwo
KSwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpKTsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gbV9yZXNvdXJj
ZS0+b3B0aW9ucygpLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzOwotICAgIGlmICht
X2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRoaXMsIHJlc3Bv
bnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5k
bGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoYXV0byBzaG91bGRDb250
aW51ZSkgbXV0YWJsZSB7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpIHsK
KyAgICAgICAgY2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGF1dG8gc2hvdWxkQ29udGludWUpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0g
U2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6Tm8pCiAgICAgICAgICAgICAgICAgc3RvcCgpOwog
ICAgICAgICB9KTsKKyAgICB9CiAKICAgICBtX2xvYWRlci0+YWRkUmVzcG9uc2VGb3JUZXN0aW5n
KHJlc3BvbnNlKTsKIH0KQEAgLTIwNiw4ICsyMDcsOCBAQCBib29sIE1lZGlhUmVzb3VyY2U6OnNo
b3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJj
ZQogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsK
IAogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRDYWNoZVJlc3BvbnNl
KCp0aGlzLCByZXNwb25zZSk7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkp
CisgICAgICAgIHJldHVybiBjbGllbnQtPnNob3VsZENhY2hlUmVzcG9uc2UoKnRoaXMsIHJlc3Bv
bnNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjE2LDggKzIxNyw4IEBAIHZvaWQgTWVk
aWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJl
c291cmNlUmVxdWVzdCYmCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09
IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXMo
dGhpcyk7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVkaXJlY3RSZWNl
aXZlZCgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAg
ICAgY2xpZW50LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNw
b25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CkBAIC0yMjcsOCArMjI4LDggQEAg
dm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRh
U2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIGlmIChhdXRv
IGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRhdGFTZW50KCp0aGlz
LCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJj
ZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCkBAIC0yMzYsOCArMjM3LDggQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGIK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAK
ICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7
CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+
ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQpAQCAtMjQ1LDExICsyNDYsMTEgQEAgdm9pZCBNZWRpYVJlc291cmNl
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtM
b2FkTWUKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJj
ZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAg
ICBpZiAobV9jbGllbnQpIHsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkg
ewogICAgICAgICBpZiAobV9yZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBtX3Jlc291cmNlLT5yZXNvdXJjZUVy
cm9yKCkpOworICAgICAgICAgICAgY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBtX3Jlc291cmNl
LT5yZXNvdXJjZUVycm9yKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC0+
bG9hZEZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKKyAgICAgICAgICAgIGNsaWVudC0+bG9hZEZp
bmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKICAgICB9CiAgICAgc3RvcCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaAppbmRleCBjOTU4Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhh
ODEyOTkzLi43MTlmNzhiYjliZWIxOTgyMTZmYjNkMmM0ZjRkNDY5NDI0YTlmMDQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtMzEsMTAgKzMxLDEyIEBACiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsMTAgKzQ1
LDExIEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogCi1jbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQg
OiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IHsKK2NsYXNz
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Q
bGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKKyAgICAvLyBUaG9zZSBt
ZXRob2RzIG11c3QgYmUgY2FsbGVkIG9uIFBsYXRmb3JtTWVkaWFSZXNvdXJjZTo6dGFyZ2V0UXVl
dWUoKQogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjgsOSArNzEsMTMgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKCkgPSBkZWZhdWx0OwogCi0gICAg
dmlydHVhbCBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVz
b3VyY2VSZXF1ZXN0JiYsIExvYWRPcHRpb25zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbmRI
MlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRz
LCBSZXNvdXJjZUVycm9yPiYmKT4mJikgPSAwOwogCisgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBh
bnkgdGhyZWFkcy4gUmV0dXJuIHRoZSBXb3JrUXVldWUgb24gd2hpY2ggdGhlIFBsYWZ0b3JtTWVk
aWFSZXNvdXJjZSBhbmQgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IG11c3QgYmUgYmUgY2Fs
bGVkIG9uLgorICAgIHZpcnR1YWwgUmVmPFdURjo6V29ya1F1ZXVlPiB0YXJnZXRRdWV1ZSgpIHsg
cmV0dXJuIFdURjo6V29ya1F1ZXVlOjptYWluKCk7IH0KKyAgICAvLyByZXF1ZXN0UmVzb3VyY2Ug
d2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLCB0aGUgUGxhdGZvcm1NZWRpYVJlc291
cmNlIG9iamVjdCBpcyB0byBiZSB1c2VkIG9uIHRhcmdldFF1ZXVlKCkuCisgICAgdmlydHVhbCBS
ZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1
ZXN0JiYsIExvYWRPcHRpb25zKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIoKSA9IGRlZmF1bHQ7CiB9OwpAQCAtODMsMTEgKzkwLDIwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBkaWRQYXNz
QWNjZXNzQ29udHJvbENoZWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQg
c2V0Q2xpZW50KFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+JiYgY2xpZW50KSB7
IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9Ci0gICAgUGxhdGZvcm1NZWRpYVJlc291cmNl
Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQotCi1wcm90ZWN0ZWQ6
Ci0gICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4gbV9jbGllbnQ7CisgICAg
dm9pZCBzZXRDbGllbnQoUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4mJiBjbGll
bnQpCisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgIG1f
Y2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworICAgIH0KKyAgICBSZWZQdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlQ2xpZW50PiBjbGllbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OworICAgICAgICByZXR1cm4gbV9jbGllbnQ7CisgICAgfQorCitwcml2
YXRlOgorICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IG1fY2xpZW50IFdU
Rl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDk1YTM3
ODlhZDYyNzE5YzEwMGJjMDY3ZDNjZThhYWE5MzJkNTc0MTEuLjVkNWFiMTlkNmQ5ODEyM2YxZDli
MTg3MTY5ODQyMWVkOTU5Y2ZiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
IAogT0JKQ19DTEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIEFWQXNzZXRU
cmFjazsKQEAgLTQ2OCw2ICs0NjksNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxOU1RpbWVJbnRlcnZhbD4gbV9jYWNoZWRMaXZlVXBkYXRlSW50ZXJ2YWw7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE9ic2VydmVyPHZvaWQoKT4+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2Vy
dmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYnNlcnZlcjx2b2lkKCk+PiBtX3dhaXRGb3JWaWRl
b091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcjsKKyAgICBSZWY8V1RGOjpXb3JrUXVl
dWU+IG1fdGFyZ2V0UXVldWUgeyBXVEY6OldvcmtRdWV1ZTo6bWFpbigpIH07CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBiZGMyYTgyZTczZjRmZGY4OGI1YTU0Yzk5N2YzMmJm
Njg5ZGU5OTZhLi5hNmNjYzY4MmYzNGZmY2FjYjI0ODliNmZhZWQ5MjZkODcyZmZkZjAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBh
dGgsIFdhbAogICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmJhc2VVUkwgZXJy
b3I6bmlsXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIE5TQXJyYXkgKnBy
b3BlcnR5S2V5cyA9IEBbTlNVUkxOYW1lS2V5LCBOU1VSTENvbnRlbnRNb2RpZmljYXRpb25EYXRl
S2V5LCBOU1VSTElzUmVndWxhckZpbGVLZXldOwogICAgIE5TRGlyZWN0b3J5RW51bWVyYXRvciAq
ZW51bWVyYXRvciA9IFtmaWxlTWFuYWdlciBlbnVtZXJhdG9yQXRVUkw6YmFzZVVSTCBpbmNsdWRp
bmdQcm9wZXJ0aWVzRm9yS2V5czoKICAgICAgICAgcHJvcGVydHlLZXlzIG9wdGlvbnM6TlNEaXJl
Y3RvcnlFbnVtZXJhdGlvblNraXBzU3ViZGlyZWN0b3J5RGVzY2VuZGFudHMKQEAgLTQ0Nyw4ICs0
NDcsMTEgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMoKQogCiAgICAgW1ttX2F2QXNzZXQgcmVzb3VyY2VMb2Fk
ZXJdIHNldERlbGVnYXRlOm5pbCBxdWV1ZTowXTsKIAotICAgIGZvciAoYXV0byYgcGFpciA6IG1f
cmVzb3VyY2VMb2FkZXJNYXApCi0gICAgICAgIHBhaXIudmFsdWUtPmludmFsaWRhdGUoKTsKKyAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVyTWFwKSB7CisgICAgICAgIG1fdGFy
Z2V0UXVldWUtPmRpc3BhdGNoKFtsb2FkZXIgPSBwYWlyLnZhbHVlXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGxvYWRlci0+aW52YWxpZGF0ZSgpOworICAgICAgICB9KTsKKyAgICB9CiAKICAg
ICBpZiAobV92aWRlb091dHB1dCkKICAgICAgICAgbV92aWRlb091dHB1dC0+aW52YWxpZGF0ZSgp
OwpAQCAtOTY5LDcgKzk3Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwgUmV0CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9h
dkFzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAq
cmVzb3VyY2VMb2FkZXIgPSBbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBbcmVzb3Vy
Y2VMb2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXJEZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxM
b2FkZXJEZWxlZ2F0ZVF1ZXVlKCldOwogCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6aXNBVkZvdW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkKQEAgLTk3Nyw4ICs5ODAsMTAg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBSZXQKICAgICAgICAgJiYgW3Jlc291cmNlTG9hZGVyIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSldCiAgICAg
ICAgICYmIFtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNl
c3Npb25EYXRhRGVsZWdhdGVRdWV1ZSldKSB7CiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI+IG1lZGlhUmVzb3VyY2VMb2FkZXIgPSBwbGF5ZXIoKS0+Y3JlYXRlUmVz
b3VyY2VMb2FkZXIoKTsKLSAgICAgICAgaWYgKG1lZGlhUmVzb3VyY2VMb2FkZXIpCisgICAgICAg
IGlmIChtZWRpYVJlc291cmNlTG9hZGVyKSB7CisgICAgICAgICAgICBtX3RhcmdldFF1ZXVlID0g
bWVkaWFSZXNvdXJjZUxvYWRlci0+dGFyZ2V0UXVldWUoKTsKICAgICAgICAgICAgIHJlc291cmNl
TG9hZGVyLlVSTFNlc3Npb24gPSAoTlNVUkxTZXNzaW9uICopYWRvcHROUyhbW1dlYkNvcmVOU1VS
TFNlc3Npb24gYWxsb2NdIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6Km1lZGlhUmVzb3VyY2VMb2Fk
ZXIgZGVsZWdhdGU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSBkZWxlZ2F0
ZVF1ZXVlOnJlc291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGVRdWV1ZV0pLmdldCgp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0
b3IoY2hhcHRlck1ldGFkYXRhRGlkQ2hhbmdlOikgbmFtZTpBVkFzc2V0Q2hhcHRlck1ldGFkYXRh
R3JvdXBzRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDptX2F2QXNzZXQuZ2V0KCldOwpAQCAt
MjA2NywyNSArMjA3MiwzNCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogI2VuZGlmCiAjZW5k
aWYKIAotICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QsIG1fdGFyZ2V0UXVl
dWUpOwogICAgIG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZS
ZXF1ZXN0LCByZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5z
dGFydExvYWRpbmcoKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCiB7Ci0gICAgU3RyaW5nIHNjaGVtZSA9
IFtbW2F2UmVxdWVzdCByZXF1ZXN0XSBVUkxdIHNjaGVtZV07CisgICAgUmVmUHRyIHJlc291cmNl
TG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlck1hcC5nZXQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJl
cXVlc3QpOwogCi0gICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciA9
IG1fcmVzb3VyY2VMb2FkZXJNYXAuZ2V0KChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsK
LQotICAgIGlmIChyZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmVzb3VyY2VMb2FkZXItPnN0b3BM
b2FkaW5nKCk7CisgICAgaWYgKHJlc291cmNlTG9hZGVyKSB7CisgICAgICAgIG1fdGFyZ2V0UXVl
dWUtPmRpc3BhdGNoKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLT5zdG9wTG9hZGluZygpOwor
ICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0ICphdlJlcXVlc3QpCiB7CisgICAgUmVmUHRyIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJj
ZUxvYWRlck1hcC5nZXQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QpOwogICAgIG1fcmVz
b3VyY2VMb2FkZXJNYXAucmVtb3ZlKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKKwor
ICAgIGlmIChyZXNvdXJjZUxvYWRlcikgeworICAgICAgICBtX3RhcmdldFF1ZXVlLT5kaXNwYXRj
aChbcmVzb3VyY2VMb2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+aW52YWxpZGF0ZSgpOworICAgICAgICB9KTsK
KyAgICB9CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNB
dmFpbGFibGUoKQpAQCAtMjQ2Miw3ICsyNDc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpyZXNvbHZlZFVSTENoYW5nZWQoKQogCiBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdAog
ewotICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VMb2FkZXIgPSBtX2F2QXNzZXQu
Z2V0KCkucmVzb3VyY2VMb2FkZXI7CisgICAgQVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJj
ZUxvYWRlciA9IFttX2F2QXNzZXQgcmVzb3VyY2VMb2FkZXJdOwogICAgIGlmICghRGVwcmVjYXRl
ZEdsb2JhbFNldHRpbmdzOjppc0FWRm91bmRhdGlvbk5TVVJMU2Vzc2lvbkVuYWJsZWQoKQogICAg
ICAgICB8fCAhW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJM
U2Vzc2lvbildKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDc2LDcgKzI0OTAsNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNz
Q2hlY2soKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9y
aWdpbikgY29uc3QKIHsKLSAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVy
ID0gbV9hdkFzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxv
YWRlciAqcmVzb3VyY2VMb2FkZXIgPSBbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBp
ZiAoIURlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNBVkZvdW5kYXRpb25OU1VSTFNlc3Npb25F
bmFibGVkKCkKICAgICAgICAgfHwgIVtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKFVSTFNlc3Npb24pXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwZWZl
ZWFlZjViMmQ3MWJjNmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJjLi42Y2VkNWM3MDkwZGI4Njg4YmI1
Y2Y0MTZkMWNjMmEyNjFiYzM1YzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtMzUsMjAgKzM1LDI1IEBACiAKIE9CSkNfQ0xB
U1MgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q7CiAKK25hbWVzcGFjZSBXVEYgeworY2xh
c3MgV29ya1F1ZXVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJl
c291cmNlTWVkaWFMb2FkZXI7CiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOworY2xhc3MgUGFyc2VkQ29udGVudFJhbmdlOwogY2xhc3MgUGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCi1jbGFzcyBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXI+IHsKK2NsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKik7CisgICAgc3RhdGljIFJlZjxXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBw
YXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KiwgV1RGOjpXb3JrUXVldWUmKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIHZvaWQgc3Rh
cnRMb2FkaW5nKCk7CkBAIC01NiwyMyArNjEsMjcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxp
ZGF0ZSgpOwogCiBwcml2YXRlOgotICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdSZXF1ZXN0ICopOworICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0KiwgV1RGOjpXb3JrUXVldWUmKTsKIAogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRSZXNvdXJj
ZU1lZGlhTG9hZGVyOwogICAgIGZyaWVuZCBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cjsKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogCi0gICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAvLyBS
ZXR1cm4gdHJ1ZSBpZiBzdG9wTG9hZGluZygpIGdvdCBjYWxsZWQsIGluZGljYXRpbmcgdGhhdCBu
byBmdXJ0aGVyIHByb2Nlc3Npbmcgc2hvdWxkIG9jY3VyLgorICAgIGJvb2wgcmVzcG9uc2VSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBpbnQsIGNvbnN0IFBhcnNlZENvbnRlbnRSYW5nZSYsIHNpemVf
dCk7CisgICAgYm9vbCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOworCiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OworICAgIFdlYWtQdHI8TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4gbV9wYXJlbnQ7IC8vIE9ubHkgZXZlciBk
ZXJlZmVyZW5jZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIFJldGFpblB0cjxBVkFzc2V0UmVz
b3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiBtX2RhdGFVUkxNZWRpYUxvYWRlcjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcj4gbV9yZXNvdXJjZU1lZGlhTG9h
ZGVyOwotICAgIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBtX3BsYXRmb3Jt
TWVkaWFMb2FkZXI7CisgICAgUmVmUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gbV9w
bGF0Zm9ybU1lZGlhTG9hZGVyOwogICAgIHNpemVfdCBtX3Jlc3BvbnNlT2Zmc2V0IHsgMCB9Owor
ICAgIFJlZjxXVEY6OldvcmtRdWV1ZT4gbV90YXJnZXRRdWV1ZTsKKyAgICBib29sIG1faW52YWxp
ZGF0ZWQgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDRiNTk0ZmZmOGQ2ZjRmNzFjNzZkMDU2
ZWJhMTI4Zjg1ODA3ZGI0YjQuLmQxYmZjZjQyZDM0MmJhZTlmMjY3OGFmOWZiMTMyZmNiMzI4NzRl
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KQEAgLTM5LDcgKzM5LDkgQEAKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRSZXNvdXJjZUxvYWRlci5oPgogI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiBAaW50ZXJmYWNlIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdDb250ZW50SW5mb3Jt
YXRpb25SZXF1ZXN0IChXZWJLaXRFeHRlbnNpb25zKQpAQCAtMTE4LDcgKzEyMCw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNl
ID09IG1fcmVzb3VyY2UpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIG1f
cGFyZW50LnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOworICAgIG1fcGFyZW50LnJlc3BvbnNl
UmVjZWl2ZWQocmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwg
cmVzcG9uc2UuY29udGVudFJhbmdlKCksIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgp
KTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0x
MzcsMTEgKzEzOSwxMSBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYQogICAgICAgICBtX3BhcmVu
dC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKmRhdGEpOwogfQogCi1jbGFzcyBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXIgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNl
Q2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
PiB7CitjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXIgZmluYWwgOiBwdWJsaWMgUGxh
dGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+
IGNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXImLCBSZXNvdXJjZVJlcXVlc3QmJik7Ci0gICAgflBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlcigpIHsgc3RvcCgpOyB9CisgICAgc3RhdGljIFJlZlB0cjxQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI+IGNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImLCBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXImLCBSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgflBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcigpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgc3RvcCgpOwogCkBAIC0xNjIs
MTIyICsxNjQsMTM0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmlu
aXNoZWQoKTsgfQogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKKyAg
ICBjb25zdCBXVEY6OldvcmtRdWV1ZSYgbV90YXJnZXRRdWV1ZTsKICAgICBSZWZQdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9i
dWZmZXI7CiB9OwogCi1XZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQorUmVmUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQogewogICAgIGF1dG8gcmVzb3VyY2UgPSBsb2FkZXIucmVxdWVzdFJlc291
cmNlKFdURk1vdmUocmVxdWVzdCksIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9w
dGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBhdXRvKiByZXNvdXJjZVBvaW50ZXIgPSByZXNvdXJjZS5nZXQoKTsK
ICAgICBhdXRvIGNsaWVudCA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyIHsgcGFyZW50LCByZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH0pOwotICAgIFdlYWtQdHIg
cmVzdWx0ID0gY2xpZW50OwotCi0gICAgcmVzb3VyY2VQb2ludGVyLT5zZXRDbGllbnQoV1RGTW92
ZShjbGllbnQpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJlc291cmNlUG9pbnRlci0+c2V0
Q2xpZW50KGNsaWVudC5jb3B5UmVmKCkpOworICAgIHJldHVybiBjbGllbnQ7CiB9CiAKIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZWY8UGxhdGZvcm1NZWRpYVJlc291cmNlPiYm
IHJlc291cmNlKQogICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgICwgbV90YXJnZXRRdWV1ZShw
YXJlbnQubV90YXJnZXRRdWV1ZSkKICAgICAsIG1fcmVzb3VyY2UoV1RGTW92ZShyZXNvdXJjZSkp
CiB7CiB9CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpzdG9wKCkKIHsKKyAg
ICBtX3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIGlmICghbV9yZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZXNvdXJjZSA9IFdURk1vdmUobV9y
ZXNvdXJjZSk7Ci0gICAgcmVzb3VyY2UtPnN0b3AoKTsKLSAgICByZXNvdXJjZS0+c2V0Q2xpZW50
KG51bGxwdHIpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jlc291cmNlID0gV1RGTW92ZShtX3Jl
c291cmNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHJlc291cmNlLT5zdG9wKCk7CisgICAgICAg
IHJlc291cmNlLT5zZXRDbGllbnQobnVsbHB0cik7CisgICAgfSk7CiB9CiAKIHZvaWQgUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIG1fcGFyZW50LnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOworICAgIG1fdGFyZ2V0
UXVldWUuYXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCisgICAgbV9wYXJlbnQucmVzcG9uc2VSZWNl
aXZlZChyZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZXNw
b25zZS5jb250ZW50UmFuZ2UoKSwgcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOwog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9
CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmFpbGVkKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogeworICAgIG1fdGFyZ2V0UXVldWUuYXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOworCiAgICAgbV9wYXJlbnQubG9hZEZhaWxlZChlcnJvcik7CiB9CiAKIHZvaWQgUGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogeworICAgIG1fdGFyZ2V0
UXVldWUuYXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVk
KCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Cisg
ICAgbV90YXJnZXRRdWV1ZS5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBtX2J1ZmZlci5h
cHBlbmQoYnVmZmVyKTsKICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
Km1fYnVmZmVyLmdldCgpKTsKIH0KIAotY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKK2Ns
YXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXImLCBSZXNvdXJjZVJlcXVlc3QmJik7CiAKIHByaXZhdGU6CiAgICAgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAg
ICAgOiBtX3BhcmVudChwYXJlbnQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVxdWVzdC51cmwo
KS5wcm90b2NvbElzRGF0YSgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAg
aWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBE
YXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewotICAgICAgICBtX3Jlc3Bv
bnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpy
ZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
cmVzdWx0LT5kYXRhKSk7Ci0gICAgfQotCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9idWZmZXIgfHwgbV9yZXNwb25zZS5p
c051bGwoKSkgeworICAgICAgICAvLyBkYXRhIFVSTHMgY2FuIGVuZCB1cCBiZWluZyB1bnJlYXNv
bmFibHkgYmlnIHNvIHdlIHdhbnQgdG8gYXZvaWQgaGF2aW5nIHRvIGNhbGwgaXNvbGF0ZWRDb3B5
KCkgaGVyZSB3aGVuIHBhc3NpbmcgdGhlIFVSTCBTdHJpbmcgdG8gdGhlIGxvYWRpbmcgdGhyZWFk
LgorICAgICAgICBhdXRvIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3Bv
bnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fcGFyZW50
Lm1fdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwYXJlbnQgPSBSZWYgeyBtX3BhcmVudCB9
LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUo
KS5pc29sYXRlZENvcHkoKSwgc3RhdHVzID0gIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIGNv
bnRlbnRSYW5nZSA9IHJlc3BvbnNlLmNvbnRlbnRSYW5nZSgpXSB7CisKKyAgICAgICAgICAgIGlm
IChtX3BhcmVudC5tX2RhdGFVUkxNZWRpYUxvYWRlci5nZXQoKSAhPSB0aGlzKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKG1fcGFyZW50LnJlc3BvbnNlUmVjZWl2
ZWQobWltZVR5cGUsIHN0YXR1cywgY29udGVudFJhbmdlLCBidWZmZXItPnNpemUoKSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAobV9wYXJlbnQubmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKGJ1ZmZlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKKyAgICAgICAgfSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9wYXJlbnQubV90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBh
cmVudCA9IFJlZiB7IG1fcGFyZW50IH1dIHsKKyAgICAgICAgICAgIGlmIChtX3BhcmVudC5tX2Rh
dGFVUkxNZWRpYUxvYWRlci5nZXQoKSAhPSB0aGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIG1fcGFyZW50LmxvYWRGYWlsZWQoUmVzb3VyY2VFcnJvcihSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9wYXJlbnQucmVzcG9uc2VSZWNlaXZlZChtX3Jlc3BvbnNlKTsKLSAgICAgICAgaWYg
KCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3BhcmVudC5uZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhp
cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQo
KTsKLSAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCi1SZWY8V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyPiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0ICphdlJlcXVlc3QpCitSZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QsIFdURjo6
V29ya1F1ZXVlJiB0YXJnZXRRdWV1ZSkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0KTsKICAgICBB
U1NFUlQocGFyZW50KTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIocGFyZW50LCBhdlJlcXVlc3QpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIocGFyZW50LCBhdlJlcXVlc3QsIHRhcmdldFF1ZXVlKSk7
CiB9CiAKLVdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCwgV1RG
OjpXb3JrUXVldWUmIHRhcmdldFF1ZXVlKQogICAgIDogbV9wYXJlbnQocGFyZW50KQogICAgICwg
bV9hdlJlcXVlc3QoYXZSZXF1ZXN0KQorICAgICwgbV90YXJnZXRRdWV1ZSh0YXJnZXRRdWV1ZSkK
IHsKIH0KIAogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjp+V2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyKCkKIHsKLSAgICBzdG9wTG9hZGluZygpOwogfQogCiB2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKIHsKKyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgbWFpbiB0
aHJlYWQsIGJlZm9yZSBhbnkgbG9hZGVycyBhcmUgY3JlYXRlZC4KICAgICBpZiAobV9kYXRhVVJM
TWVkaWFMb2FkZXIgfHwgbV9yZXNvdXJjZU1lZGlhTG9hZGVyIHx8IG1fcGxhdGZvcm1NZWRpYUxv
YWRlciB8fCAhbV9wYXJlbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzEzLDQ5ICszMjcsNTYg
QEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgW21f
YXZSZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6MF07CiB9CiAKKy8vIE5vIGNvZGUgYWNj
ZXNzaW5nIGB0aGlzYCBzaG91bGQgZXZlciBiZSB1c2VkIGFmdGVyIGNhbGxpbmcgc3RvcExvYWRp
bmcoKS4KIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZygpCiB7Cisg
ICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAgICAgbV9kYXRhVVJM
TWVkaWFMb2FkZXIgPSBudWxscHRyOwogICAgIG1fcmVzb3VyY2VNZWRpYUxvYWRlciA9IG51bGxw
dHI7CiAKICAgICBpZiAobV9wbGF0Zm9ybU1lZGlhTG9hZGVyKSB7CiAgICAgICAgIG1fcGxhdGZv
cm1NZWRpYUxvYWRlci0+c3RvcCgpOwotICAgICAgICBtX3BsYXRmb3JtTWVkaWFMb2FkZXIgPSBu
dWxscHRyOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKG1fcGxh
dGZvcm1NZWRpYUxvYWRlcildIHsgfSk7CisgICAgfQorICAgIGlmIChtX2F2UmVxdWVzdCkgewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBtX3BhcmVudCwgaW52YWxpZGF0ZWQg
PSBtX2ludmFsaWRhdGVkLCBhdlJlcXVlc3QgPSBXVEZNb3ZlKG1fYXZSZXF1ZXN0KV0gKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAoIWludmFsaWRhdGVkICYmIHBhcmVudCkKKyAgICAgICAg
ICAgICAgICBwYXJlbnQtPmRpZFN0b3BMb2FkaW5nUmVxdWVzdChhdlJlcXVlc3QuZ2V0KCkpOwor
ICAgICAgICB9KTsKICAgICB9Ci0gICAgaWYgKG1fcGFyZW50ICYmIG1fYXZSZXF1ZXN0KQotICAg
ICAgICBtX3BhcmVudC0+ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KG1fYXZSZXF1ZXN0LmdldCgpKTsK
IH0KIAogdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmludmFsaWRhdGUoKQogewotICAg
IGlmICghbV9wYXJlbnQpCi0gICAgICAgIHJldHVybjsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3Nl
cnRJc09uV29ya1F1ZXVlKCk7CiAKKyAgICBpZiAobV9pbnZhbGlkYXRlZCkKKyAgICAgICAgcmV0
dXJuOworICAgIG1faW52YWxpZGF0ZWQgPSB0cnVlOwogICAgIG1fcGFyZW50ID0gbnVsbHB0cjsK
KyAgICBzdG9wTG9hZGluZygpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5z
dG9wTG9hZGluZygpOwotICAgIH0pOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2Jv
b2wgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFBhcnNlZENvbnRlbnRSYW5nZSYgY29udGVu
dFJhbmdlLCBzaXplX3QgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogewotICAgIGludCBzdGF0dXMg
PSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElz
T25Xb3JrUXVldWUoKTsKKwogICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBzdGF0
dXMgPiAyOTkpKSB7CiAgICAgICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nV2l0aEVycm9y
OjBdOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IGF1dG8mIGNvbnRlbnRSYW5nZSA9IHJlc3BvbnNlLmNvbnRlbnRSYW5nZSgpOwogICAgIGlmIChj
b250ZW50UmFuZ2UuaXNWYWxpZCgpKQogICAgICAgICBtX3Jlc3BvbnNlT2Zmc2V0ID0gc3RhdGlj
X2Nhc3Q8TlNVSW50ZWdlcj4oY29udGVudFJhbmdlLmZpcnN0Qnl0ZVBvc2l0aW9uKCkpOwogCiAg
ICAgaWYgKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdDb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0KiBj
b250ZW50SW5mbyA9IFttX2F2UmVxdWVzdCBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSkgewot
ICAgICAgICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkp
OworICAgICAgICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKIAogICAg
ICAgICBbY29udGVudEluZm8gc2V0Q29udGVudFR5cGU6dXRpXTsKIAotICAgICAgICBbY29udGVu
dEluZm8gc2V0Q29udGVudExlbmd0aDpjb250ZW50UmFuZ2UuaXNWYWxpZCgpID8gY29udGVudFJh
bmdlLmluc3RhbmNlTGVuZ3RoKCkgOiByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKV07
CisgICAgICAgIFtjb250ZW50SW5mbyBzZXRDb250ZW50TGVuZ3RoOmNvbnRlbnRSYW5nZS5pc1Zh
bGlkKCkgPyBjb250ZW50UmFuZ2UuaW5zdGFuY2VMZW5ndGgoKSA6IGV4cGVjdGVkQ29udGVudExl
bmd0aF07CiAgICAgICAgIFtjb250ZW50SW5mbyBzZXRCeXRlUmFuZ2VBY2Nlc3NTdXBwb3J0ZWQ6
WUVTXTsKIAogICAgICAgICAvLyBEbyBub3Qgc2V0ICJFbnRpcmVMZW5ndGhBdmFpbGFibGVPbkRl
bWFuZCIgdG8gWUVTIHdoZW4gdGhlIGxvYWRlciBpcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
ci4KQEAgLTM2OCwxMiArMzg5LDE2IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlCiAgICAgICAg
IGlmICghW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XSkgewogICAgICAgICAgICAgW21fYXZSZXF1
ZXN0IGZpbmlzaExvYWRpbmddOwogICAgICAgICAgICAgc3RvcExvYWRpbmcoKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0K
IAogdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpOworCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEzOTg3NDE3PiBTZXQgdGhlIGNvbnRlbnRU
eXBlIG9mIHRoZSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0IHRvIGFuIGVtcHR5CiAgICAgLy8g
c3RyaW5nIHRvIHRyaWdnZXIgQVZBc3NldCdzIHBsYXlhYmxlIHZhbHVlIHRvIGNvbXBsZXRlIGxv
YWRpbmcuCiAgICAgaWYgKFttX2F2UmVxdWVzdCBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSAm
JiAhW1ttX2F2UmVxdWVzdCBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSBjb250ZW50VHlwZV0p
CkBAIC0zODUsMTUgKzQxMCwxOSBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9h
ZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiB7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0
SXNPbldvcmtRdWV1ZSgpOworCiAgICAgW21fYXZSZXF1ZXN0IGZpbmlzaExvYWRpbmddOwogICAg
IHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK2Jvb2wgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKKyAgICBtX3Rhcmdl
dFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsK
ICAgICBpZiAoIWRhdGFSZXF1ZXN0KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gQ2hlY2sgZm9yIHBvc3NpYmxlIHVuc2lnbmVkIG92ZXJmbG93LgogICAg
IEFTU0VSVChkYXRhUmVxdWVzdC5jdXJyZW50T2Zmc2V0ID49IGRhdGFSZXF1ZXN0LnJlcXVlc3Rl
ZE9mZnNldCk7CkBAIC00MjcsMTIgKzQ1NiwxNCBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZQog
CiAgICAgLy8gVGhlcmUgd2FzIG5vdCBlbm91Z2ggZGF0YSBpbiB0aGUgYnVmZmVyIHRvIHNhdGlz
ZnkgdGhlIGRhdGEgcmVxdWVzdC4KICAgICBpZiAocmVtYWluaW5nTGVuZ3RoKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChkYXRhUmVxdWVzdC5jdXJy
ZW50T2Zmc2V0ICsgZGF0YVJlcXVlc3QucmVxdWVzdGVkTGVuZ3RoID49IGRhdGFSZXF1ZXN0LnJl
cXVlc3RlZE9mZnNldCkgewogICAgICAgICBbbV9hdlJlcXVlc3QgZmluaXNoTG9hZGluZ107CiAg
ICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAKaW5kZXggYjdiMDdmZjE0NTRkNTYxYTMwMjEwOGFlMzIyOTFlOGY4MzQzN2JkOS4u
ZjM4NTE3YmQzMTMxZTgxNzUzNDAxNDQyYWM0MTgxMWIyYjlhZTMzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTExODEsNyArMTE4MSw4IEBAIGJv
b2wgd2ViS2l0U3JjV291bGRUYWludE9yaWdpbihXZWJLaXRXZWJTcmMqIHNyYywgY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKICAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNy
Yy0+cHJpdi0+ZGF0YU11dGV4IH07CiAKLSAgICBhdXRvKiBjYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQq
PihtZW1iZXJzLT5yZXNvdXJjZS0+Y2xpZW50KCkpOworICAgIGF1dG8gY2xpZW50ID0gbWVtYmVy
cy0+cmVzb3VyY2UtPmNsaWVudCgpOworICAgIGF1dG8qIGNhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQqPihjbGll
bnQuZ2V0KCkpOwogICAgIGZvciAoYXV0byYgcmVzcG9uc2VPcmlnaW4gOiBjYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudC0+c2VjdXJpdHlPcmlnaW5zKCkpIHsKICAgICAgICAgaWYgKCFvcmln
aW4uaXNTYW1lT3JpZ2luRG9tYWluKCpyZXNwb25zZU9yaWdpbikpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLmgKaW5kZXggMDBjMjAwMDI1MTU5OTFh
YzBkZDRlZDMwOTEzYjIyZGRjNjhhY2U2Zi4uNTg0NWFlMTVkMGI5MTcwN2I3MTIxMDk2NzE3ODll
NjNlYjA1YTY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMzIsMTUgKzMzLDE4IEBACiBPQkpDX0NMQVNTIE5TVVJM
UmVxdWVzdDsKIE9CSkNfQ0xBU1MgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrOwogCituYW1l
c3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IFBhcnNlZFJlcXVlc3RSYW5nZTsKIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZTsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKLWNsYXNzIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3Ig
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmFuZ2VSZXNwb25zZUdlbmVyYXRvciwgV1RG
OjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yPiB7CitjbGFzcyBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I+LCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UmFuZ2VSZXNwb25zZUdlbmVyYXRvcj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmFuZ2VSZXNwb25zZUdlbmVyYXRvcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yKTsgfQorICAgIHN0YXRpYyBSZWY8UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcj4gY3JlYXRlKFdURjo6V29ya1F1ZXVlJiB0YXJnZXRRdWV1ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yKHRhcmdldFF1ZXVlKSk7IH0K
ICAgICB+UmFuZ2VSZXNwb25zZUdlbmVyYXRvcigpOwogCiAgICAgYm9vbCB3aWxsU3ludGhlc2l6
ZVJhbmdlUmVzcG9uc2VzKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqLCBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC00OCw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
ICopOwogCiBwcml2YXRlOgotICAgIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoKTsKKyAgICBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yKFdURjo6V29ya1F1ZXVlJik7CiAKICAgICBzdHJ1Y3QgRGF0YTsK
ICAgICBjbGFzcyBNZWRpYVJlc291cmNlQ2xpZW50OwpAQCAtNTcsNiArNjEsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
RnJvbURhdGEoY29uc3QgRGF0YSYpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxEYXRhPj4gbV9tYXA7CisgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3RhcmdldFF1ZXVl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
Lm1tCmluZGV4IDE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQuLjAzMTNk
NDVlZTU2ODEwMWQ0YzNiMjdkODZmMThhMjA3NzdhODI3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0KQEAgLTQwLDggKzQwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKKyAgICAvLyBUaGUgUmFuZ2VSZXNwb25zZUdlbmVyYXRvciBpcyB1c2Vk
IHdpdGggYSBXb3JrUXVldWUgd2hpY2ggY2FuIGRvIHRocmVhZCBob3Bpbmcgb3ZlciB0aW1lLgor
ICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIGNvbnRhaW5zIFdURjo6U3RyaW5ncyB3aGljaCBt
dXN0IGZpcnN0IGJlIGNvcGllZCB2aWEgaXNvbGF0ZWRDb3B5KCkuCiAgICAgRGF0YShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJj
ZSkKLSAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdp
bmFsUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZTo6ZnJvbUNyb3NzVGhyZWFkRGF0YShyZXNwb25z
ZS5jcm9zc1RocmVhZERhdGEoKSkpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0K
IAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4g
ewpAQCAtNjIsMTkgKzY0LDE1IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRh
IHsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKIH07CiAKLVJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoKQorUmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcihXVEY6OldvcmtRdWV1ZSYgdGFy
Z2V0UXVldWUpCisgICAgOiBtX3RhcmdldFF1ZXVlKHRhcmdldFF1ZXVlKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiB9CiAKLVJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6On5SYW5nZVJl
c3BvbnNlR2VuZXJhdG9yKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotfQorUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6flJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoKSA9IGRlZmF1bHQ7
CiAKIHN0YXRpYyBSZXNvdXJjZVJlc3BvbnNlIHN5bnRoZXNpemVkUmVzcG9uc2VGb3JSYW5nZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBjb25zdCBQYXJzZWRSZXF1
ZXN0UmFuZ2UmIHBhcnNlZFJlcXVlc3RSYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHRvdGFs
Q29udGVudExlbmd0aCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8g
YmVnaW4gPSBwYXJzZWRSZXF1ZXN0UmFuZ2UuYmVnaW47CiAgICAgYXV0byBlbmQgPSBwYXJzZWRS
ZXF1ZXN0UmFuZ2UuZW5kOwogCkBAIC05NSw3ICs5Myw3IEBAIHN0YXRpYyBSZXNvdXJjZVJlc3Bv
bnNlIHN5bnRoZXNpemVkUmVzcG9uc2VGb3JSYW5nZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBv
cmlnCiAKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgYXV0byogZGF0
YSA9IG1fbWFwLmdldCh0YXNrLm9yaWdpbmFsUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOwog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDggKzEwMiw3IEBAIHZvaWQg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2sgKnRhc2spCiAKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNl
VG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
KnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLQorICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3Jr
UXVldWUoKTsKICAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAg
aWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTE1LDgg
KzExMiw4IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNr
SWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgaWYgKCF0YXNrRGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFp
blB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFz
a0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKLSAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0
YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0
YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGFyZ2V0UXVldWUgPSBt
X3RhcmdldFF1ZXVlXSB7CisgICAgICAgIHRhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVl
KCk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVu
bmluZykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCF0YXNrRGF0YSkKQEAgLTEz
NiwxNyArMTMzLDE1IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNl
VG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJlc291
cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwotICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZ2VuZXJhdG9yLCB0YXNrXSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGdlbmVyYXRvcikKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZW1v
dmVUYXNrKHRhc2suZ2V0KCkpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAoZ2Vu
ZXJhdG9yKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVtb3ZlVGFzayh0YXNrLmdldCgp
KTsKICAgICAgICAgfQogICAgIH07CiAKICAgICBzd2l0Y2ggKHRhc2tEYXRhLT5yZXNwb25zZVN0
YXRlKSB7CiAgICAgY2FzZSBEYXRhOjpUYXNrRGF0YTo6UmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhl
c2l6ZWRZZXQ6IHsKICAgICAgICAgYXV0byByZXNwb25zZSA9IHN5bnRoZXNpemVkUmVzcG9uc2VG
b3JSYW5nZShkYXRhLm9yaWdpbmFsUmVzcG9uc2UsIHJhbmdlLCBleHBlY3RlZENvbnRlbnRMZW5n
dGgpOwotICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkUmVzcG9uc2U6cmVz
cG9uc2UgY29tcGxldGlvbkhhbmRsZXI6W2dpdmVCeXRlc1RvVGFzayA9IFdURk1vdmUoZ2l2ZUJ5
dGVzVG9UYXNrKSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgdGFza0RhdGEgfSwgdGFzayA9IHJldGFp
blB0cih0YXNrKV0gKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgc2hvdWxkQ29u
dGludWUpIHsKKyAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZFJlc3BvbnNl
OnJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyOltnaXZlQnl0ZXNUb1Rhc2sgPSBXVEZNb3ZlKGdp
dmVCeXRlc1RvVGFzayksIHRhc2tEYXRhID0gV2Vha1B0ciB7IHRhc2tEYXRhIH0sIHRhc2sgPSBy
ZXRhaW5QdHIodGFzayldIChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIHNob3Vs
ZENvbnRpbnVlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICh0YXNrRGF0YSkKICAgICAgICAg
ICAgICAgICB0YXNrRGF0YS0+cmVzcG9uc2VTdGF0ZSA9IERhdGE6OlRhc2tEYXRhOjpSZXNwb25z
ZVN0YXRlOjpTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgICAgICBpZiAo
c2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKQpAQCAtMTY3
LDcgKzE2Miw2IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9U
YXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAKIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0
YShjb25zdCBEYXRhJiBkYXRhKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
aWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxs
eUZpbmlzaGVkTG9hZGluZzo6WWVzKQogICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgp
OwogCkBAIC0xODAsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIAogdm9pZCBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFu
Z2VzKERhdGEmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3Rh
cmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgYXV0byBleHBlY3RlZENvbnRl
bnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShkYXRhKTsKIAogICAgIGZv
ciAoYXV0byYgcGFpciA6IGRhdGEudGFza0RhdGEpCkBAIC0xODksNyArMTgzLDcgQEAgdm9pZCBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFu
Z2VzKERhdGEmIGRhdGEpCiAKIGJvb2wgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6d2lsbEhhbmRs
ZVJlcXVlc3QoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3RhcmdldFF1
ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgYXV0byogZGF0YSA9IG1fbWFwLmdldChy
ZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yMzQsMTMgKzIyOCwxMSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbAogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBmaW5hbAogICAg
IHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVy
YXRvcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJh
dG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwpAQCAtMjUyLDcgKzI0NCw2IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCiAgICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBhdXRvIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAudGFrZShtX3VybFN0cmluZyk7
CkBAIC0yNjQsNyArMjU1LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsCiAg
ICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBSZWZQdHIgZ2Vu
ZXJhdG9yIHsgbV9nZW5lcmF0b3IuZ2V0KCkgfTsKICAgICAgICAgaWYgKCFnZW5lcmF0b3IpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yODIsNyArMjcyLDcgQEAgcHJpdmF0ZToKIAogYm9vbCBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjp3aWxsU3ludGhlc2l6ZVJhbmdlUmVzcG9uc2VzKFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7
CiAgICAgTlNVUkxSZXF1ZXN0ICpvcmlnaW5hbFJlcXVlc3QgPSB0YXNrLm9yaWdpbmFsUmVxdWVz
dDsKICAgICBpZiAoIW9yaWdpbmFsUmVxdWVzdC5VUkwpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggZWE0YTliZjI5NzgyOWViZDAyOTE0NzZjYmY4YTdl
NTQ5NDcyMTI2ZC4uNGI2YTcwMWVlOWQwNDkwYzhmNjdiZDE3OGRkOWVkMGM3ZWY3MGRjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgIlJhbmdlUmVz
cG9uc2VHZW5lcmF0b3IuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW1wb3J0IDxG
b3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgorI2ltcG9ydCA8d3RmL0F0b21pY3MuaD4KICNpbXBv
cnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNp
bXBvcnQgPHd0Zi9Mb2NrLmg+CkBAIC01MCwxMiArNTEsMTQgQEAgY2xhc3MgUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwotY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sg
OiBib29sOwogfQogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30KKwogZW51
bSBjbGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0cyA6IHVpbnQ4
X3QgewogICAgIFVua25vd24sCiAgICAgUGFzcywKQEAgLTY0LDIwICs2NywyMiBAQCBlbnVtIGNs
YXNzIFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzIDogdWludDhfdCB7
CiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKKy8vIENyZWF0ZWQgb24gdGhlIG1haW4gdGhy
ZWFkOyB1c2VkIG9uIHRhcmdldFF1ZXVlLgogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJD
b3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogQHByaXZhdGUKICAgICBSZWZQdHI8V2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBfbG9hZGVyOworICAgIFJlZlB0cjxXVEY6
OldvcmtRdWV1ZT4gX3RhcmdldFF1ZXVlOwogICAgIFdlYWtPYmpDUHRyPGlkPE5TVVJMU2Vzc2lv
bkRlbGVnYXRlPj4gX2RlbGVnYXRlOwogICAgIFJldGFpblB0cjxOU09wZXJhdGlvblF1ZXVlPiBf
cXVldWU7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc2Vzc2lvbkRlc2NyaXB0aW9uOwotICAg
IEhhc2hTZXQ8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4+IF9kYXRhVGFz
a3M7Ci0gICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBfb3JpZ2lu
czsKICAgICBMb2NrIF9kYXRhVGFza3NMb2NrOwotICAgIEJPT0wgX2ludmFsaWRhdGVkOworICAg
IEhhc2hTZXQ8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4+IF9kYXRhVGFz
a3M7IC8vIFByb3RlY3RlZCBieSBfZGF0YVRhc2tzTG9jaworICAgIEhhc2hTZXQ8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gX29yaWdpbnM7IC8vIEFjY2Vzc2VkIG9uIHRoZSBtYWlu
IHRocmVhZC4KKyAgICBXVEY6OkF0b21pYzxCT09MPiBfaW52YWxpZGF0ZWQ7CiAgICAgTlNVSW50
ZWdlciBfbmV4dFRhc2tJZGVudGlmaWVyOwotICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVl
X3Q+IF9pbnRlcm5hbFF1ZXVlOworICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gX2ludGVybmFs
UXVldWU7CiAgICAgV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHMgX2Nv
cnNSZXN1bHRzOwotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yPiBf
cmFuZ2VSZXNwb25zZUdlbmVyYXRvcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcj4gX3JhbmdlUmVzcG9uc2VHZW5lcmF0b3I7IC8vIE9ubHkgY3JlYXRlZC9hY2Nl
c3NlZCBvbiBfdGFyZ2V0UXVldWUKIH0KIC0gKGlkKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYpbG9hZGVyIGRlbGVnYXRlOihpZDxO
U1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+KWRlbGVnYXRlIGRlbGVnYXRlUXVldWU6KE5TT3BlcmF0
aW9uUXVldWUqKXF1ZXVlOwogQHByb3BlcnR5IChyZWFkb25seSwgcmV0YWluKSBOU09wZXJhdGlv
blF1ZXVlICpkZWxlZ2F0ZVF1ZXVlOwpAQCAtODUsNiArOTAsNyBAQCBXRUJDT1JFX0VYUE9SVCBA
aW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiBAcHJvcGVydHkgKHJl
YWRvbmx5LCBjb3B5KSBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uOwog
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqc2Vzc2lvbkRlc2NyaXB0aW9uOwogQHByb3BlcnR5
IChyZWFkb25seSkgQk9PTCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrczsKK0Bwcm9wZXJ0eSAoYXNz
aWduLCBhdG9taWMpIFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzIGNv
cnNSZXN1bHRzOwogLSAodm9pZClmaW5pc2hUYXNrc0FuZEludmFsaWRhdGU7CiAtICh2b2lkKWlu
dmFsaWRhdGVBbmRDYW5jZWw7CiAtIChCT09MKXdvdWxkVGFpbnRPcmlnaW46KGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJilvcmlnaW47CkBAIC0xMjAsMjAgKzEyNiwyMiBAQCBXRUJDT1JF
X0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiAtICh2
b2lkKXNlbmRIMlBpbmc6KE5TVVJMICopdXJsIHBvbmdIYW5kbGVyOih2b2lkICheKShOU0Vycm9y
ICogX051bGxhYmxlIGVycm9yLCBOU1RpbWVJbnRlcnZhbCBpbnRlcnZhbCkpcG9uZ0hhbmRsZXI7
CiBAZW5kCiAKKy8vIENyZWF0ZWQgb24gY29tLmFwcGxlLmF2Zm91bmRhdGlvbi5jdXN0b211cmwu
bnN1cmxzZXNzaW9uCiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayA6IE5T
T2JqZWN0IHsKLSAgICBXZWFrT2JqQ1B0cjxXZWJDb3JlTlNVUkxTZXNzaW9uPiBfc2Vzc2lvbjsK
KyAgICBXZWFrT2JqQ1B0cjxXZWJDb3JlTlNVUkxTZXNzaW9uPiBfc2Vzc2lvbjsgLy8gQWNjZXNz
c2VkIGZyb20gb3BlcmF0aW9uIHF1ZXVlLCBtYWluIGFuZCBsb2FkZXIgdGhyZWFkLiBNdXN0IGJl
IGFjY2Vzc2VkIHRocm91Z2ggT2JqLUMgcHJvcGVydHkuCisgICAgUmVmUHRyPFdURjo6V29ya1F1
ZXVlPiBfdGFyZ2V0UXVldWU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZT4gX3Jlc291cmNlOwotICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBfcmVzcG9uc2U7
CisgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IF9yZXNwb25zZTsgLy8gU2V0IG9uIG9wZXJh
dGlvbiBxdWV1ZS4KICAgICBOU1VJbnRlZ2VyIF90YXNrSWRlbnRpZmllcjsKLSAgICBSZXRhaW5Q
dHI8TlNVUkxSZXF1ZXN0PiBfb3JpZ2luYWxSZXF1ZXN0OwotICAgIFJldGFpblB0cjxOU1VSTFJl
cXVlc3Q+IF9jdXJyZW50UmVxdWVzdDsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBfb3Jp
Z2luYWxSZXF1ZXN0OyAvLyBTZXQgb24gY29uc3RydWN0aW9uLCBuZXZlciBtb2RpZmllZC4KKyAg
ICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBfY3VycmVudFJlcXVlc3Q7IC8vIFNldCBvbiBjb25z
dHJ1Y3Rpb24sIG5ldmVyIG1vZGlmaWVkLgogICAgIGludDY0X3QgX2NvdW50T2ZCeXRlc1JlY2Vp
dmVkOwogICAgIGludDY0X3QgX2NvdW50T2ZCeXRlc1NlbnQ7CiAgICAgaW50NjRfdCBfY291bnRP
ZkJ5dGVzRXhwZWN0ZWRUb1NlbmQ7CiAgICAgaW50NjRfdCBfY291bnRPZkJ5dGVzRXhwZWN0ZWRU
b1JlY2VpdmU7CiAgICAgTlNVUkxTZXNzaW9uVGFza1N0YXRlIF9zdGF0ZTsKLSAgICBSZXRhaW5Q
dHI8TlNFcnJvcj4gX2Vycm9yOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3Rhc2tEZXNjcmlw
dGlvbjsKKyAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX2Vycm9yOyAvLyBVbnVzZWQsIGFsd2F5cyBu
aWwuCisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfdGFza0Rlc2NyaXB0aW9uOyAvLyBPbmx5IHNl
dCAvIHJlYWQgb24gdGhlIHVzZXIncyB0aHJlYWQuCiAgICAgZmxvYXQgX3ByaW9yaXR5OwogfQog
CkBAIC0xNDUsNyArMTUzLDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNV
UkxTZXNzaW9uIDogTlNPYmplY3QgewogQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVzU2Vu
dDsKIEBwcm9wZXJ0eSBpbnQ2NF90IGNvdW50T2ZCeXRlc0V4cGVjdGVkVG9TZW5kOwogQHByb3Bl
cnR5IGludDY0X3QgY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmU7Ci1AcHJvcGVydHkgTlNV
UkxTZXNzaW9uVGFza1N0YXRlIHN0YXRlOworQHByb3BlcnR5IChhc3NpZ24sIGF0b21pYykgTlNV
UkxTZXNzaW9uVGFza1N0YXRlIHN0YXRlOwogQHByb3BlcnR5IChudWxsYWJsZSwgcmVhZG9ubHks
IGNvcHkpIE5TRXJyb3IgKmVycm9yOwogQHByb3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNTdHJp
bmcgKnRhc2tEZXNjcmlwdGlvbjsKIEBwcm9wZXJ0eSBmbG9hdCBwcmlvcml0eTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQppbmRleCAzYzhiZTA4YzI5MzRlNTRkYTNiNzQ5Y2E2ZGEzNGVkYTk2ZGM5
YjhiLi5jN2Q0ZmM1N2MwZGVkNjNkNTI5ZmU2MTRhZDQ3YTU0NWY0ZmRlMTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tCkBAIC0zNyw5ICszNywxMSBAQAogI2ltcG9ydCA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpD
UHRyLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ug
V1RGOwogCiAjcHJhZ21hIG1hcmsgLSBQcml2YXRlIGRlY2xhcmF0aW9ucwogCkBAIC01Niw3ICs1
OCw3IEBAIHN0YXRpYyBOU0RhdGUgKiBfX251bGxhYmxlIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUo
TW9ub3RvbmljVGltZSB0aW1lKQogfQogCiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb25U
YXNrVHJhbnNhY3Rpb25NZXRyaWNzIDogTlNPYmplY3QKLS0gKGluc3RhbmNldHlwZSlfaW5pdFdp
dGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzOworLSAoaW5z
dGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYm
KW1ldHJpY3Mgb25UYXJnZXQ6KFdURjo6V29ya1F1ZXVlKil3b3JrUXVldWU7CiBAcHJvcGVydHkg
KG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpmZXRjaFN0YXJ0RGF0ZTsKIEBwcm9w
ZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKmRvbWFpbkxvb2t1cFN0YXJ0
RGF0ZTsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKmRvbWFp
bkxvb2t1cEVuZERhdGU7CkBAIC03OSwyMSArODEsMjMgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRp
b24gV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgewogICAgIFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBfbWV0cmljczsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVl
dWU+IF90YXJnZXRRdWV1ZTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6
KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3MKKy0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzIG9u
VGFyZ2V0OihXVEY6OldvcmtRdWV1ZSopcXVldWUKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIHF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfbWV0cmljcyA9IG1l
dHJpY3M7CisgICAgX21ldHJpY3MgPSBXVEZNb3ZlKG1ldHJpY3MpOworICAgIF90YXJnZXRRdWV1
ZSA9IHF1ZXVlOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAg
ICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoV2ViQ29yZU5T
VVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MuY2xhc3MsIHNlbGYpKQotICAgICAgICBy
ZXR1cm47CisgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbbWV0cmljcyA9IFdURk1vdmUoX21l
dHJpY3MpXSB7IH0pOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtMjE3LDI4ICsyMjEs
MjkgQEAgLSAoQk9PTCltdWx0aXBhdGgKIEBlbmQKIAogQGludGVyZmFjZSBXZWJDb3JlTlNVUkxT
ZXNzaW9uVGFza01ldHJpY3MgOiBOU09iamVjdAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1l
dHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3M7CistIChpbnN0YW5j
ZXR5cGUpX2luaXRXaXRoTWV0cmljczooV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpbWV0
cmljcyBvblRhcmdldDoobm9ubnVsbCBXVEY6OldvcmtRdWV1ZSAqKXRhcmdldFF1ZXVlOwogQHBy
b3BlcnR5IChjb3B5LCByZWFkb25seSkgTlNBcnJheTxOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rp
b25NZXRyaWNzICo+ICp0cmFuc2FjdGlvbk1ldHJpY3M7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgewogICAgIFJldGFpblB0cjxXZWJDb3Jl
TlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcz4gX3RyYW5zYWN0aW9uTWV0cmljczsK
KyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IF90YXJnZXRRdWV1ZTsKIH0KIAotLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1l
dHJpY3MKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmJiltZXRyaWNzIG9uVGFyZ2V0Oihub25udWxsIFdURjo6V29ya1F1ZXVlICop
dGFyZ2V0UXVldWUKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHRhcmdldFF1
ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfdHJhbnNhY3Rpb25NZXRyaWNzID0gYWRv
cHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIGFsbG9jXSBf
aW5pdFdpdGhNZXRyaWNzOldURk1vdmUobWV0cmljcyldKTsKKyAgICBfdGFyZ2V0UXVldWUgPSB0
YXJnZXRRdWV1ZTsKKyAgICBfdHJhbnNhY3Rpb25NZXRyaWNzID0gYWRvcHROUyhbW1dlYkNvcmVO
U1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNz
OldURk1vdmUobWV0cmljcykgb25UYXJnZXQ6dGFyZ2V0UXVldWVdKTsKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVE
ZWFsbG9jYXRlT25NYWluVGhyZWFkKFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcy5jbGFz
cywgc2VsZikpCi0gICAgICAgIHJldHVybjsKKyAgICBfdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtt
ZXRyaWNzID0gV1RGTW92ZShfdHJhbnNhY3Rpb25NZXRyaWNzKV0geyB9KTsKIAogICAgIFtzdXBl
ciBkZWFsbG9jXTsKIH0KQEAgLTI0Niw2ICsyNTEsOCBAQCAtICh2b2lkKWRlYWxsb2MKIEBkeW5h
bWljIHRyYW5zYWN0aW9uTWV0cmljczsKIC0gKE5TQXJyYXk8TlNVUkxTZXNzaW9uVGFza1RyYW5z
YWN0aW9uTWV0cmljcyAqPiAqKXRyYW5zYWN0aW9uTWV0cmljcwogeworICAgIC8vIFRPRE86IFRo
aXMgaXMgbGlrZWx5IG5vdCB0aHJlYWQtc2FmZS4gSG93IHRvIGhhbmRsZSB0aGlzIG9iamVjdD8K
KyAgICAvLyBBY2Nlc3NlZCBmcm9tIGRlbGVnYXRlIHRocmVhZC4KICAgICByZXR1cm4gQFsgKE5T
VVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKilzZWxmLT5fdHJhbnNhY3Rpb25NZXRy
aWNzLmdldCgpIF07CiB9CiAKQEAgLTI2Miw3ICsyNjksNyBAQCAtIChXZWJDb3JlOjpSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yJilyYW5nZVJlc3BvbnNlR2VuZXJhdG9yOwogQGVuZAogCiBAaW50ZXJm
YWNlIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAoKQotLSAoaWQpaW5pdFdpdGhTZXNzaW9u
OihXZWJDb3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBpZGVudGlmaWVyOihOU1VJbnRlZ2VyKWlk
ZW50aWZpZXIgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKKy0gKGlkKWluaXRXaXRo
U2Vzc2lvbjooV2ViQ29yZU5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50
ZWdlcilpZGVudGlmaWVyIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdGFyZ2V0UXVl
dWU6KFdURjo6V29ya1F1ZXVlKil0YXJnZXRRdWV1ZTsKIC0gKHZvaWQpX3Jlc3RhcnQ7CiAtICh2
b2lkKV9jYW5jZWw7CiBAcHJvcGVydHkgKGFzc2lnbikgV2ViQ29yZU5TVVJMU2Vzc2lvbiAqIF9O
dWxsYWJsZSBzZXNzaW9uOwpAQCAtMjc0LDIwICsyODEsMjYgQEAgTlNfQVNTVU1FX05PTk5VTExf
RU5ECiAjcHJhZ21hIG1hcmsgLSBXZWJDb3JlTlNVUkxTZXNzaW9uCiAKIEBpbXBsZW1lbnRhdGlv
biBXZWJDb3JlTlNVUkxTZXNzaW9uCitAc3ludGhlc2l6ZSBjb3JzUmVzdWx0cyA9IF9jb3JzUmVz
dWx0czsKKwogLSAoaWQpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjooUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyJilsb2FkZXIgZGVsZWdhdGU6KGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4p
aW5EZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOihOU09wZXJhdGlvblF1ZXVlKilpblF1ZXVlCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAg
IGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIEFTU0VSVChfY29yc1Jlc3Vs
dHMgPT0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlVua25vd24p
OwotICAgIEFTU0VSVCghX2ludmFsaWRhdGVkKTsKKyAgICBBU1NFUlQoIV9pbnZhbGlkYXRlZC5s
b2FkKCkpOwogCiAgICAgX2xvYWRlciA9ICZsb2FkZXI7CisgICAgX3RhcmdldFF1ZXVlID0gX2xv
YWRlci0+dGFyZ2V0UXVldWUoKTsKICAgICBzZWxmLmRlbGVnYXRlID0gaW5EZWxlZ2F0ZTsKICAg
ICBfcXVldWUgPSBpblF1ZXVlID8gaW5RdWV1ZSA6IFtOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1
ZV07Ci0gICAgX2ludGVybmFsUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2Ny
ZWF0ZSgiV2ViQ29yZU5TVVJMU2Vzc2lvbiBfaW50ZXJuYWxRdWV1ZSIsIERJU1BBVENIX1FVRVVF
X1NFUklBTCkpOwotICAgIF9yYW5nZVJlc3BvbnNlR2VuZXJhdG9yID0gUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6Y3JlYXRlKCk7CisgICAgX2ludGVybmFsUXVldWUgPSBXVEY6OldvcmtRdWV1ZTo6
Y3JlYXRlKCJXZWJDb3JlTlNVUkxTZXNzaW9uIF9pbnRlcm5hbFF1ZXVlIik7CisgICAgX3Rhcmdl
dFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAgICAg
ICBzdHJvbmdTZWxmLT5fcmFuZ2VSZXNwb25zZUdlbmVyYXRvciA9IFJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OmNyZWF0ZSgqc3Ryb25nU2VsZi0+X3RhcmdldFF1ZXVlKTsKKyAgICB9KTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtMjk2LDE3ICszMDksMTkgQEAgLSAodm9pZClkZWFsbG9jCiB7
CiAgICAgewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKF9kYXRhVGFza3NMb2NrKTsKLSAg
ICAgICAgZm9yIChhdXRvJiB0YXNrIDogX2RhdGFUYXNrcykKLSAgICAgICAgICAgIFt0YXNrIHNl
dFNlc3Npb246bmlsXTsKKyAgICAgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbZGF0YVRhc2tz
ID0gV1RGTW92ZShfZGF0YVRhc2tzKSwgcmFuZ2VSZXNwb25zZUdlbmVyYXRvciA9IFdURk1vdmUo
X3JhbmdlUmVzcG9uc2VHZW5lcmF0b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYmIHRhc2sgOiBkYXRhVGFza3MpCisgICAgICAgICAgICAgICAgW3Rhc2sgc2V0U2Vzc2lv
bjpuaWxdOworICAgICAgICB9KTsKICAgICB9CisgICAgZW5zdXJlT25NYWluVGhyZWFkKFtsb2Fk
ZXIgPSBXVEZNb3ZlKF9sb2FkZXIpXSB7IH0pOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbbG9h
ZGVyID0gV1RGTW92ZShfbG9hZGVyKV0gewotICAgIH0pOwogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiB7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBVTlVTRURfUEFSQU0oem9uZSk7CiAgICAgcmV0dXJuIFtzZWxm
IHJldGFpbl07CiB9CkBAIC0zMTUsNiArMzMwLDcgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pv
bmUgKil6b25lCiAKIC0gKHZvaWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrICopdGFzawogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgp
OwogICAgIHRhc2suc2Vzc2lvbiA9IG5pbDsKIAogICAgIHsKQEAgLTMyMiwxMiArMzM4LDExIEBA
IC0gKHZvaWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFz
awogCiAgICAgICAgIEFTU0VSVChfZGF0YVRhc2tzLmNvbnRhaW5zKHRhc2spKTsKICAgICAgICAg
X2RhdGFUYXNrcy5yZW1vdmUodGFzayk7Ci0gICAgICAgIGlmICghX2RhdGFUYXNrcy5pc0VtcHR5
KCkgfHwgIV9pbnZhbGlkYXRlZCkKKyAgICAgICAgaWYgKCFfZGF0YVRhc2tzLmlzRW1wdHkoKSB8
fCAhX2ludmFsaWRhdGVkLmxvYWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbj4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKLSAg
ICBbc2VsZiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZl0geworICAgIFtzZWxmIGFk
ZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAg
ICAgIGlmIChbc3Ryb25nU2VsZi5nZXQoKS5kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKFVSTFNlc3Npb246ZGlkQmVjb21lSW52YWxpZFdpdGhFcnJvcjopXSkKICAgICAgICAg
ICAgIFtzdHJvbmdTZWxmLmdldCgpLmRlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAq
KXN0cm9uZ1NlbGYuZ2V0KCkgZGlkQmVjb21lSW52YWxpZFdpdGhFcnJvcjpuaWxdOwogICAgIH1d
OwpAQCAtMzM1LDkgKzM1MCw4IEBAIC0gKHZvaWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrICopdGFzawogCiAtICh2b2lkKWFkZERlbGVnYXRlT3BlcmF0aW9uOihG
dW5jdGlvbjx2b2lkKCk+JiYpZnVuY3Rpb24KIHsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJM
U2Vzc2lvbj4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKICAgICBSZXRhaW5QdHI8TlNCbG9ja09wZXJh
dGlvbj4gb3BlcmF0aW9uID0gW05TQmxvY2tPcGVyYXRpb24gYmxvY2tPcGVyYXRpb25XaXRoQmxv
Y2s6bWFrZUJsb2NrUHRyKFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKV07Ci0gICAgZGlzcGF0Y2hf
YXN5bmMoX2ludGVybmFsUXVldWUuZ2V0KCksIFtzdHJvbmdTZWxmLCBvcGVyYXRpb25dIHsKKyAg
ICBfaW50ZXJuYWxRdWV1ZS0+ZGlzcGF0Y2goW3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiks
IG9wZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKV0gewogICAgICAgICBbc3Ryb25nU2VsZi5n
ZXQoKS5kZWxlZ2F0ZVF1ZXVlIGFkZE9wZXJhdGlvbjpvcGVyYXRpb24uZ2V0KCldOwogICAgICAg
ICBbb3BlcmF0aW9uIHdhaXRVbnRpbEZpbmlzaGVkXTsKICAgICB9KTsKQEAgLTM0NSwyMSArMzU5
LDI0IEBAIC0gKHZvaWQpYWRkRGVsZWdhdGVPcGVyYXRpb246KEZ1bmN0aW9uPHZvaWQoKT4mJilm
dW5jdGlvbgogCiAtICh2b2lkKXRhc2s6KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqKXRh
c2sgZGlkUmVjZWl2ZUNPUlNBY2Nlc3NDaGVja1Jlc3VsdDooQk9PTClyZXN1bHQKIHsKKyAgICBf
dGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBVTlVTRURfUEFSQU0odGFz
ayk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIF9jb3JzUmVzdWx0cyA9IFdlYkNvcmVOU1VS
TFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpGYWlsOwotICAgIGVsc2UgaWYgKF9jb3Jz
UmVzdWx0cyAhPSBXZWJDb3JlTlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0czo6RmFp
bCkKLSAgICAgICAgX2NvcnNSZXN1bHRzID0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3ND
aGVja1Jlc3VsdHM6OlBhc3M7CisgICAgICAgIHNlbGYuY29yc1Jlc3VsdHMgPSBXZWJDb3JlTlNV
UkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0czo6RmFpbDsKKyAgICBlbHNlIGlmIChzZWxm
LmNvcnNSZXN1bHRzICE9IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRz
OjpGYWlsKQorICAgICAgICBzZWxmLmNvcnNSZXN1bHRzID0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNP
UlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlBhc3M7CiB9CiAKIC0gKHZvaWQpdGFzazooV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzayBkaWRSZWNlaXZlUmVzcG9uc2VGcm9tT3JpZ2luOihS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpb3JpZ2luCiB7CisgICAgX3RhcmdldFF1ZXVl
LT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgVU5VU0VEX1BBUkFNKHRhc2spOwogICAgIF9v
cmlnaW5zLmFkZChXVEZNb3ZlKG9yaWdpbikpOwogfQogCiAtIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yJilyYW5nZVJlc3BvbnNlR2VuZXJhdG9yCiB7CisgICAgX3RhcmdldFF1ZXVl
LT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgcmV0dXJuICpfcmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjsKIH0KIApAQCAtNDA2LDcgKzQyMyw3IEBAIC0gKFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlciYpbG9hZGVyCiBAZHluYW1pYyBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrczsKIC0gKEJPT0wp
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVja3MKIHsKLSAgICByZXR1cm4gX2NvcnNSZXN1bHRzID09IFdl
YkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpQYXNzOworICAgIHJldHVy
biBzZWxmLmNvcnNSZXN1bHRzID09IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tS
ZXN1bHRzOjpQYXNzOwogfQogCiAtIChCT09MKXdvdWxkVGFpbnRPcmlnaW46KGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luICYpb3JpZ2luCkBAIC00MjAsNyArNDM3LDcgQEAgLSAoQk9PTCl3
b3VsZFRhaW50T3JpZ2luOihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiAmKW9yaWdpbgog
CiAtICh2b2lkKWZpbmlzaFRhc2tzQW5kSW52YWxpZGF0ZQogewotICAgIF9pbnZhbGlkYXRlZCA9
IFlFUzsKKyAgICBfaW52YWxpZGF0ZWQuc3RvcmUoWUVTKTsKICAgICB7CiAgICAgICAgIExvY2tl
cjxMb2NrPiBsb2NrZXIoX2RhdGFUYXNrc0xvY2spOwogICAgICAgICBpZiAoIV9kYXRhVGFza3Mu
aXNFbXB0eSgpKQpAQCAtNDk0LDEwICs1MTEsMTAgQEAgLSAodm9pZClnZXRBbGxUYXNrc1dpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxfX2tpbmRvZiBOU1VSTFNlc3Npb24K
IAogLSAoTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhVGFza1dpdGhSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0CiB7Ci0gICAgaWYgKF9pbnZhbGlkYXRlZCkKKyAgICBpZiAoX2ludmFs
aWRhdGVkLmxvYWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gdGFzayA9IGFk
b3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgYWxsb2NdIGluaXRXaXRoU2Vzc2lv
bjpzZWxmIGlkZW50aWZpZXI6X25leHRUYXNrSWRlbnRpZmllcisrIHJlcXVlc3Q6cmVxdWVzdF0p
OworICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
YWxsb2NdIGluaXRXaXRoU2Vzc2lvbjpzZWxmIGlkZW50aWZpZXI6X25leHRUYXNrSWRlbnRpZmll
cisrIHJlcXVlc3Q6cmVxdWVzdCB0YXJnZXRRdWV1ZTpfdGFyZ2V0UXVldWUuZ2V0KCldKTsKICAg
ICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoX2RhdGFUYXNrc0xvY2spOwogICAgICAg
ICBfZGF0YVRhc2tzLmFkZCh0YXNrLmdldCgpKTsKQEAgLTUxNCw3ICs1MzEsNyBAQCAtICh2b2lk
KXNlbmRIMlBpbmc6KE5TVVJMICopdXJsIHBvbmdIYW5kbGVyOih2b2lkICheKShOU0Vycm9yICpl
cnJvciwgTlNUaW1lSW50ZQogewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1Nl
bGYgPSByZXRhaW5QdHIoc2VsZiksIHVybCA9IHJldGFpblB0cih1cmwpLCBwb25nSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihwb25nSGFuZGxlcildICgpIG11dGFibGUgewogCi0gICAgICAgIGlmIChf
aW52YWxpZGF0ZWQpCisgICAgICAgIGlmIChfaW52YWxpZGF0ZWQubG9hZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIHBvbmdIYW5kbGVyKGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERv
bWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvclVua25vd24gdXNlckluZm86bmls
XSkuZ2V0KCksIDApOwogCiAgICAgICAgIHNlbGYubG9hZGVyLnNlbmRIMlBpbmcodXJsLmdldCgp
LCBbc2VsZiwgc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHBvbmdIYW5kbGVyID0g
V1RGTW92ZShwb25nSGFuZGxlcildIChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYm
IHJlc3VsdCkgbXV0YWJsZSB7CkBAIC01MjQsOCArNTQxLDEwIEBAIC0gKHZvaWQpc2VuZEgyUGlu
ZzooTlNVUkwgKil1cmwgcG9uZ0hhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKmVycm9yLCBOU1Rp
bWVJbnRlCiAgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSByZXN1bHQudmFsdWUoKS52YWx1ZSgp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVycm9yID0gcmVzdWx0LmVycm9y
KCk7Ci0gICAgICAgICAgICBbc2VsZiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbcG9uZ0hhbmRsZXIg
PSBXVEZNb3ZlKHBvbmdIYW5kbGVyKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKSwgaW50ZXJ2YWxd
IHsKLSAgICAgICAgICAgICAgICBwb25nSGFuZGxlcihlcnJvci5nZXQoKSwgaW50ZXJ2YWwpOwor
ICAgICAgICAgICAgW3NlbGYgYWRkRGVsZWdhdGVPcGVyYXRpb246W3BvbmdIYW5kbGVyID0gV1RG
TW92ZShwb25nSGFuZGxlciksIGVycm9yID0gV1RGTW92ZShlcnJvciksIGludGVydmFsXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwb25nSGFuZGxlciA9
IFdURk1vdmUocG9uZ0hhbmRsZXIpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpLCBpbnRlcnZhbF0g
eworICAgICAgICAgICAgICAgICAgICBwb25nSGFuZGxlcihlcnJvci5nZXQoKSwgaW50ZXJ2YWwp
OworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfV07CiAgICAgICAgIH0pOwogICAg
IH0pOwpAQCAtNTk3LDkgKzYxNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291
cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrICp0YXNrKQorICAgIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudChXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIFdURjo6V29ya1F1ZXVlJiB0YXJnZXQpCiAgICAg
ICAgIDogbV90YXNrKHRhc2spCisgICAgICAgICwgbV90YXJnZXRRdWV1ZSh0YXJnZXQpCiAgICAg
eworICAgICAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgfQog
CiAgICAgdm9pZCBjbGVhclRhc2soKTsKQEAgLTYxNCwxOSArNjM1LDE5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBMb2NrIG1fdGFza0xvY2s7
Ci0gICAgV2Vha09iakNQdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2sgV1RG
X0dVQVJERURfQllfTE9DSyhtX3Rhc2tMb2NrKTsKKyAgICBXZWFrT2JqQ1B0cjxXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2s+IG1fdGFzazsgLy8gT25seSBhY2Nlc3NlZCBvbiB0YXJnZXQgcXVl
dWUuCisgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3RhcmdldFF1ZXVlOwogfTsKIAogdm9pZCBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmNsZWFyVGFzaygpCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09u
V29ya1F1ZXVlKCk7CiAgICAgbV90YXNrID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYg
cmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sg
fTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFt
X3Rhc2spCiAgICAgICAgIHJldHVybjsKIApAQCAtNjM1LDggKzY1Niw4IEBAIHZvaWQgV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHJlc291cmNlCiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpy
ZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fdGFyZ2V0
UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0
aGlzIH07Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFz
aykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5
Q2hlY2s6Ok5vKTsKIApAQCAtNjQ1LDcgKzY2Niw3IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYK
IAogYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVz
cG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAg
ICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2sp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjU0LDcgKzY3NSw3IEBAIGJvb2wgV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjCiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAg
ICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2sp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNjYzLDIwICs2ODQsMTYgQEAgdm9pZCBXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHJlc28KIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlZGly
ZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CisgICAgbV90YXJnZXRRdWV1ZS0+
YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47
CiAKLSAgICBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0OnJlc3Bv
bnNlIHJlcXVlc3Q6V1RGTW92ZShyZXF1ZXN0KSBjb21wbGV0aW9uSGFuZGxlcjogW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgcmVxdWVzdCkg
bXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3JlcXVlc3QgPSByZXF1ZXN0Lmlz
b2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOwotICAgICAgICB9KTsKLSAgICB9XTsKKyAgICBbbV90YXNrIHJlc291cmNlOiZy
ZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0OnJlc3BvbnNlIHJlcXVlc3Q6V1RGTW92ZShyZXF1ZXN0
KSBjb21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CiB9CiAKIHZv
aWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3Rh
cmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNjg1LDcgKzcwMiw3IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJl
CiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2FkRmFpbGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CisgICAgbV90YXJnZXRRdWV1
ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1
cm47CiAKQEAgLTY5NCw3ICs3MTEsNyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
a0NsaWVudDo6bG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cgogCiB2b2lk
IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OworICAgIG1fdGFyZ2V0UXVl
dWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0
dXJuOwogCkBAIC03MDYsMTIgKzcyMywxMyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzbwogI3By
YWdtYSBtYXJrIC0gV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrCiAKIEBpbXBsZW1lbnRhdGlv
biBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sKLS0gKGlkKWluaXRXaXRoU2Vzc2lvbjooV2Vi
Q29yZU5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlm
aWVyIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKKy0gKGlkKWluaXRXaXRoU2Vzc2lv
bjooV2ViQ29yZU5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50ZWdlcilp
ZGVudGlmaWVyIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdGFyZ2V0UXVldWU6KFdU
Rjo6V29ya1F1ZXVlKil0YXJnZXRRdWV1ZQogewogICAgIHNlbGYudGFza0lkZW50aWZpZXIgPSBp
ZGVudGlmaWVyOwotICAgIHNlbGYuc2Vzc2lvbiA9IHNlc3Npb247CiAgICAgc2VsZi5zdGF0ZSA9
IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVN1c3BlbmRlZDsKICAgICBzZWxmLnByaW9yaXR5ID0gTlNV
UkxTZXNzaW9uVGFza1ByaW9yaXR5RGVmYXVsdDsKKyAgICBzZWxmLnNlc3Npb24gPSBzZXNzaW9u
OworICAgIF90YXJnZXRRdWV1ZSA9IHRhcmdldFF1ZXVlOwogCiAgICAgLy8gQ29yZU1lZGlhIHdp
bGwgZXhwbGljaXRseSBhZGQgYSB1c2VyIGFnZW50IGhlYWRlci4gUmVtb3ZlIGlmIHByZXNlbnQu
CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVVSTFJlcXVlc3Q+IG11dGFibGVSZXF1ZXN0OwpAQCAt
NzM2LDcgKzc1NCw3IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogCiAtICh2
b2lkKV9yZXN0YXJ0CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBfdGFyZ2V0
UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKIAogICAgIFtzZWxmIF9jYW5jZWxdOwogCkBA
IC03NDYsMjMgKzc2NCwyOCBAQCAtICh2b2lkKV9yZXN0YXJ0CiAgICAgaWYgKFtzZWxmLnNlc3Np
b24gcmFuZ2VSZXNwb25zZUdlbmVyYXRvcl0ud2lsbEhhbmRsZVJlcXVlc3Qoc2VsZiwgc2VsZi5v
cmlnaW5hbFJlcXVlc3QpKQogICAgICAgICByZXR1cm47CiAKLSAgICBfcmVzb3VyY2UgPSBzZWxm
LnNlc3Npb24ubG9hZGVyLnJlcXVlc3RSZXNvdXJjZShzZWxmLm9yaWdpbmFsUmVxdWVzdCwgUGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpEaXNhbGxvd0NhY2hpbmcpOwot
ICAgIGlmIChfcmVzb3VyY2UpIHsKLSAgICAgICAgX3Jlc291cmNlLT5zZXRDbGllbnQoYWRvcHRS
ZWYoKm5ldyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQoc2VsZikpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEEgbmlsIHJldHVybiBmcm9tIHJlcXVlc3RSZXNv
dXJjZSBtZWFucyB0aGUgbG9hZCB3YXMgY2FuY2VsbGVkIGJ5IGEgZGVsZWdhdGUgY2xpZW50Ci0g
ICAgW3NlbGYgX3Jlc291cmNlOm5pbCBsb2FkRmluaXNoZWRXaXRoRXJyb3I6UmVzb3VyY2VFcnJv
cihSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pIG1ldHJpY3M6eyB9XTsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtsb2FkZXIgPSBSZWYgeyBzZWxmLnNlc3Npb24ubG9hZGVyIH0sIHN0
cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIG11dGFibGUgeworICAgICAgICBhdXRvIHJl
c291cmNlID0gbG9hZGVyLT5yZXF1ZXN0UmVzb3VyY2UoW3N0cm9uZ1NlbGYgb3JpZ2luYWxSZXF1
ZXN0XSwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpEaXNhbGxvd0Nh
Y2hpbmcpOworICAgICAgICBzdHJvbmdTZWxmLT5fdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtyZXNv
dXJjZSA9IFdURk1vdmUocmVzb3VyY2UpLCBzdHJvbmdTZWxmXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIHN0cm9uZ1NlbGYtPl9yZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICAgICAgaWYg
KHJlc291cmNlKQorICAgICAgICAgICAgICAgIHJlc291cmNlLT5zZXRDbGllbnQoYWRvcHRSZWYo
Km5ldyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQoc3Ryb25nU2VsZi5nZXQoKSwg
KnN0cm9uZ1NlbGYtPl90YXJnZXRRdWV1ZSkpKTsKKyAgICAgICAgICAgIGVsc2UgLy8gQSBuaWwg
cmV0dXJuIGZyb20gcmVxdWVzdFJlc291cmNlIG1lYW5zIHRoZSBsb2FkIHdhcyBjYW5jZWxsZWQg
YnkgYSBkZWxlZ2F0ZSBjbGllbnQKKyAgICAgICAgICAgICAgICBbc3Ryb25nU2VsZiBfcmVzb3Vy
Y2U6bmlsIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjpSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3I6
OlR5cGU6OkNhbmNlbGxhdGlvbikgbWV0cmljczogeyB9XTsKKyAgICAgICAgfSk7CisgICAgfSk7
CiB9CiAKIC0gKHZvaWQpX2NhbmNlbAogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBpZiAoX3Jlc291
cmNlKSB7Ci0gICAgICAgIF9yZXNvdXJjZS0+c3RvcCgpOwogICAgICAgICBfcmVzb3VyY2UtPnNl
dENsaWVudChudWxscHRyKTsKLSAgICAgICAgX3Jlc291cmNlID0gbmlsOworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtyZXNvdXJjZSA9IF9yZXNvdXJjZV0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICByZXNvdXJjZS0+c3RvcCgpOworICAgICAgICB9KTsKKyAgICAgICAgLy8gVE9ETzogU2hv
dWxkIF9yZXNvdXJjZSBzaG91bGQgYmUgc2V0IHRvIG5pbCA/CiAgICAgfQogICAgIGlmIChhdXRv
ICpzZXNzaW9uID0gc2VsZi5zZXNzaW9uKQogICAgICAgICBbc2Vzc2lvbiByYW5nZVJlc3BvbnNl
R2VuZXJhdG9yXS5yZW1vdmVUYXNrKHNlbGYpOwpAQCAtNzg5LDYgKzgxMiw3IEBAIC0gKE5TVVJM
UmVxdWVzdCAqKWN1cnJlbnRSZXF1ZXN0CiAKIC0gKE5TRXJyb3IgKillcnJvcgogeworICAgIC8v
IFRPRE86IF9lcnJvciBpcyBuZXZlciBzZXQgYW5kIGlzIGFsd2F5cyBuaWwuCiAgICAgcmV0dXJu
IGFkb3B0TlMoW19lcnJvciBjb3B5XSkuYXV0b3JlbGVhc2UoKTsKIH0KIApAQCAtODA0LDEyICs4
MjgsMTYgQEAgLSAodm9pZClzZXRUYXNrRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRp
b24KIAogLSAoV2ViQ29yZU5TVVJMU2Vzc2lvbiAqKXNlc3Npb24KIHsKLSAgICByZXR1cm4gX3Nl
c3Npb24uZ2V0KCkuZ2V0KCk7CisgICAgQHN5bmNocm9uaXplZChzZWxmKSB7CisgICAgICAgIHJl
dHVybiBfc2Vzc2lvbi5nZXQoKS5hdXRvcmVsZWFzZSgpOworICAgIH0KIH0KIAogLSAodm9pZClz
ZXRTZXNzaW9uOihXZWJDb3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbgogewotICAgIF9zZXNzaW9u
ID0gc2Vzc2lvbjsKKyAgICBAc3luY2hyb25pemVkKHNlbGYpIHsKKyAgICAgICAgX3Nlc3Npb24g
PSBzZXNzaW9uOworICAgIH0KIH0KIAogLSAoTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCkBAIC04
MjIsNyArODUwLDcgQEAgLSAodm9pZCljYW5jZWwKICAgICBpZiAoc2VsZi5zdGF0ZSA9PSBOU1VS
TFNlc3Npb25UYXNrU3RhdGVDb21wbGV0ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBzZWxmLnN0
YXRlID0gTlNVUkxTZXNzaW9uVGFza1N0YXRlQ2FuY2VsaW5nOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKKyAgICBfdGFyZ2V0UXVldWUt
PmRpc3BhdGNoKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIFtw
cm90ZWN0ZWRTZWxmIF9jYW5jZWxdOwogICAgICAgICBbcHJvdGVjdGVkU2VsZiBfcmVzb3VyY2U6
bnVsbHB0ciBsb2FkRmluaXNoZWRXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5T
VVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQ2FuY2VsbGVkIHVzZXJJbmZvOm5pbF0gbWV0
cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9XTsKICAgICB9KTsKQEAgLTgzMCw3ICs4NTgsNyBA
QCAtICh2b2lkKWNhbmNlbAogCiAtICh2b2lkKXN1c3BlbmQKIHsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
az4oc2VsZildIHsKKyAgICBfdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRTZWxmID0g
UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4oc2VsZildIHsKICAgICAgICAg
Ly8gTlNVUkxTZXNzaW9uRGF0YVRhc2tzIG11c3Qgc3RhcnQgb3ZlciBhZnRlciBzdXNwZW5kaW5n
LCBzbyB3aGlsZQogICAgICAgICAvLyB3ZSBjb3VsZCBkZWZlciBsb2FkaW5nIGF0IHRoaXMgcG9p
bnQsIGluc3RlYWQgY2FuY2VsIGFuZCByZXN0YXJ0CiAgICAgICAgIC8vIHVwb24gcmVzdW1lIHNv
IGFzIHRvIGFkaGVyZSB0byBOU1VSTFNlc3Npb25EYXRhVGFzayBzZW1hbnRpY3MuCkBAIC04NDEs
NyArODY5LDcgQEAgLSAodm9pZClzdXNwZW5kCiAKIC0gKHZvaWQpcmVzdW1lCiB7Ci0gICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2s+KHNlbGYpXSB7CisgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVj
dGVkU2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNlbGYpXSB7
CiAgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLmdldCgpLnN0YXRlICE9IE5TVVJMU2Vzc2lvblRh
c2tTdGF0ZVN1c3BlbmRlZCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtODUyLDkgKzg4MCwx
MSBAQCAtICh2b2lkKXJlc3VtZQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoIWlzTWFp
blRocmVhZCgpICYmIF9yZXNvdXJjZSkgewotICAgICAgICBpZiAoYXV0byogY2xpZW50ID0gX3Jl
c291cmNlLT5jbGllbnQoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudCo+KGNsaWVudCktPmNsZWFyVGFzaygpOworICAgIGlmIChfcmVz
b3VyY2UpIHsKKyAgICAgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbY2xpZW50ID0gX3Jlc291
cmNlLT5jbGllbnQoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2xpZW50KQorICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVu
dCo+KGNsaWVudC5nZXQoKSktPmNsZWFyVGFzaygpOworICAgICAgICB9KTsKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcmVzb3VyY2UgPSBXVEZNb3ZlKF9yZXNvdXJjZSldIHsgfSk7CiAgICAg
fQogCkBAIC04NzMsNiArOTAzLDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX3RpbWluZ0RhdGEKIAog
LSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0
ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNp
Z25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50CiB7CisgICAgX3RhcmdldFF1ZXVlLT5h
c3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291
cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVzU2Vu
dCk7CiAgICAgVU5VU0VEX1BBUkFNKHRvdGFsQnl0ZXNUb0JlU2VudCk7CkBAIC04ODEsOSArOTEy
LDkgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBz
ZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZykKIAogLSAodm9pZClyZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcgogewot
ICAgIEFTU0VSVChyZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6
Ok5ldHdvcmsgfHwgcmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNl
OjpEaXNrQ2FjaGUgfHwgcmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291
cmNlOjpEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb24gfHwgcmVzcG9uc2Uuc291cmNlKCkgPT0gUmVz
b3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICBfdGFyZ2V0UXVldWUt
PmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVz
b3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCiAgICAgW3NlbGYuc2Vzc2lvbiB0YXNrOnNlbGYgZGlkUmVjZWl2ZVJlc3BvbnNlRnJv
bU9yaWdpbjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpKV07CiAgICAgW3Nl
bGYuc2Vzc2lvbiB0YXNrOnNlbGYgZGlkUmVjZWl2ZUNPUlNBY2Nlc3NDaGVja1Jlc3VsdDpyZXNv
dXJjZSA/IHJlc291cmNlLT5kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCkgOiBZRVNdOwogICAg
IHNlbGYuY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmUgPSByZXNwb25zZS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKTsKQEAgLTg5Myw4ICs5MjQsOSBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFJlc291
cgogICAgICAgICBfcmVzb3VyY2UgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKICAgICB9Ci0gICAgCisK
ICAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBzdHJvbmdTZWxmIHsg
c2VsZiB9OworICAgIC8vIEFjY2VzcyB0byBzZWxmLnNlc3Npb24gaXNuJ3QgdGhyZWFkLXNhZmUg
OyB3ZWFrLXBvaW50ZXIgYWNyb3NzIHRocmVhZC4KICAgICBpZiAoIXNlbGYuc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6
Ok5vKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxm
LCBzdHJvbmdSZXNwb25zZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CkBAIC05MDIsMTQgKzkzNCwxNCBAQCAtICh2b2lkKXJlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNv
bnN0IFJlc291cgogCiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURl
bGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5z
ZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoIVtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpj
b21wbGV0aW9uSGFuZGxlcjopXSkgewotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ry
b25nU2VsZiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBzdHJvbmdTZWxmLT5fdGFyZ2V0UXVldWUtPmRpc3Bh
dGNoKFtzdHJvbmdTZWxmLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Np
b246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNV
UkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVSZXNwb25zZTpz
dHJvbmdSZXNwb25zZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3N0cm9u
Z1NlbGYsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChO
U1VSTFNlc3Npb25SZXNwb25zZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIGRpc3Bvc2l0aW9uLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3N0cm9uZ1Nl
bGYsIGRpc3Bvc2l0aW9uLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoZGlzcG9zaXRpb24gPT0g
TlNVUkxTZXNzaW9uUmVzcG9uc2VDYW5jZWwpCiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKICAgICAgICAgICAgICAg
ICBlbHNlIHsKQEAgLTkyMywxOCArOTU1LDE4IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgUmVzb3VyCiAK
IC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxk
Q2FjaGVSZXNwb25zZTooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UKIHsKKyAgICBf
dGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKIAotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0KICAgICAvLyBGSVhNRTogcmVtb3ZlIGlmIDxyZGFyOi8vcHJv
YmxlbS8yMDAwMTk4NT4gaXMgZXZlciByZXNvbHZlZC4KICAgICByZXR1cm4gcmVzcG9uc2UuaHR0
cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0K
IAogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogeworICAgIF90YXJnZXRRdWV1ZS0+
YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNv
dXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwotICAgIFtzZWxmLnNlc3Npb24gYWRkRGVs
ZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpXSB7CisgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpb
c3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKICAg
ICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBbZGF0YSBsZW5n
dGhdOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9
IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5k
ZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpAQCAtOTQ0LDEx
ICs5NzYsMTIgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGEKIAogLSAodm9pZClyZXNvdXJjZToo
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihSZXNvdXJjZVJlcXVlc3QmJilyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcgogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0
SXNPbldvcmtRdWV1ZSgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8
fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwotICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVP
cGVyYXRpb246W3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHJlc3BvbnNlID0gcmV0YWlu
UHRyKHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSksIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
KSBtdXRhYmxlIHsKKyAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJv
bmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCByZXNwb25zZSA9IHJldGFpblB0cihyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkpLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFyZ2V0UXVldWUgPSBf
dGFyZ2V0UXVldWVdICgpIG11dGFibGUgewogICAgICAgICBpZiAoIVtyZXNwb25zZSBpc0tpbmRP
ZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11dKSB7CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3JlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHRhcmdldFF1ZXVlLT5kaXNwYXRjaChb
cmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC05NTYsMTQgKzk4OSwxNCBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJlc291cgog
CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlk
PE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVn
YXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKFVSTFNlc3Npb246dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0
OmNvbXBsZXRpb25IYW5kbGVyOildKSB7Ci0gICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyQmxvY2sgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtyZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0
IHsgbmV3UmVxdWVzdCB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJC
bG9jayA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgdGFyZ2V0UXVldWUgPSBXVEZNb3ZlKHRhcmdldFF1ZXVlKV0oTlNVUkxSZXF1
ZXN0ICpuZXdSZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICB0YXJnZXRRdWV1ZS0+
ZGlzcGF0Y2goW3JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsK
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgW2RhdGFE
ZWxlZ2F0ZSBVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdTZWxmLmdldCgpLnNlc3Np
b24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UuZ2V0KCkgbmV3UmVx
dWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRh
dGVIVFRQQm9keSkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJCbG9jay5nZXQo
KV07CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICB0YXJnZXRRdWV1ZS0+ZGlz
cGF0Y2goW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9CkBAIC05NzIsNiArMTAwNSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3QgUmVzb3VyCiAKIC0g
KHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGaW5p
c2hlZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIG1ldHJpY3M6KGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpbWV0cmljcwogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9
PSBfcmVzb3VyY2UpOwogICAgIGlmIChzZWxmLnN0YXRlID09IE5TVVJMU2Vzc2lvblRhc2tTdGF0
ZUNvbXBsZXRlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtOTgwLDcgKzEwMTQsNyBAQCAtICh2b2lk
KV9yZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmluaXNoZWRX
aXRoRXJyb3I6KE5TRXJybwogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2s+IHN0cm9uZ1NlbGYgeyBzZWxmIH07CiAgICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Np
b24+IHN0cm9uZ1Nlc3Npb24geyBzZWxmLnNlc3Npb24gfTsKICAgICBSZXRhaW5QdHI8TlNFcnJv
cj4gc3Ryb25nRXJyb3IgeyBlcnJvciB9OwotICAgIGF1dG8gdGFza01ldHJpY3MgPSBhZG9wdE5T
KFtbV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNz
Ok5ldHdvcmtMb2FkTWV0cmljcyhtZXRyaWNzKV0pOworICAgIGF1dG8gdGFza01ldHJpY3MgPSBh
ZG9wdE5TKFtbV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhN
ZXRyaWNzOm1ldHJpY3MuaXNvbGF0ZWRDb3B5KCkgb25UYXJnZXQ6X3RhcmdldFF1ZXVlLmdldCgp
XSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiwg
c3Ryb25nU2Vzc2lvbiwgc3Ryb25nRXJyb3IsIHRhc2tNZXRyaWNzID0gV1RGTW92ZSh0YXNrTWV0
cmljcyldICgpIG11dGFibGUgewogICAgICAgICBpZDxOU1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+
IGRlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4pc3Ryb25nU2Vzc2lvbi5n
ZXQoKS5kZWxlZ2F0ZTsKIApAQCAtOTkwLDcgKzEwMjQsNyBAQCAtICh2b2lkKV9yZXNvdXJjZToo
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6KE5T
RXJybwogICAgICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
VVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOildKQogICAgICAgICAgICAgW2Rl
bGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1Nlc3Npb24uZ2V0KCkgdGFz
azooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZENvbXBsZXRlV2l0
aEVycm9yOnN0cm9uZ0Vycm9yLmdldCgpXTsKIAotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtz
dHJvbmdTZWxmLCBzdHJvbmdTZXNzaW9uXSB7CisgICAgICAgIHN0cm9uZ1NlbGYtPl90YXJnZXRR
dWV1ZS0+ZGlzcGF0Y2goW3N0cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb25dIHsKICAgICAgICAgICAg
IFtzdHJvbmdTZXNzaW9uIHRhc2tDb21wbGV0ZWQ6c3Ryb25nU2VsZi5nZXQoKV07CiAgICAgICAg
IH0pOwogICAgIH1dOwpAQCAtOTk4LDE2ICsxMDMyLDE5IEBAIC0gKHZvaWQpX3Jlc291cmNlOihQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjooTlNF
cnJvCiAKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9yJill
cnJvcgogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIFtz
ZWxmIF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6ZXJyb3IubnNFcnJv
cigpIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CiB9CiAKIC0gKHZvaWQpcmVzb3Vy
Y2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjoo
Y29uc3QgUmVzb3VyY2VFcnJvciYpZXJyb3IKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElz
T25Xb3JrUXVldWUoKTsKICAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVk
V2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKSBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1d
OwogfQogCiAtICh2b2lkKXJlc291cmNlRmluaXNoZWQ6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgbWV0cmljczooY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzCiB7Cisg
ICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgW3NlbGYgX3Jlc291
cmNlOnJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjpuaWwgbWV0cmljczptZXRyaWNzXTsK
IH0KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA3MmE0MjJkNGFlZmQ2NjUxZmY5ZGNmNzg0MzdjMDY0
MmIyZTUxN2RiLi5lNWU2OWFlZmIwMGY3NGI1OTg0MTc3NTRiZDI2ZTk3NDI4ZmVlYzZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC00NTEsOCArNDUxLDExIEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCiAK
IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpCiB7Ci0gICAgaWYgKCFtX3JlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyKQorICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAgIGlmICghbV9y
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcikgewogICAgICAgICBtX3JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcj4oKTsKKyAg
ICAgICAgbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci0+aW5pdGlhbGl6ZUNvbm5lY3Rpb24o
JmNvbm5lY3Rpb24oKSk7CisgICAgfQogCiAgICAgcmV0dXJuICptX3JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IDdmNTEyYzZjMTFhOGU3MTA4Y2YwMDYyYjU4
NGQyN2I1ODkwOGQxOGYuLjczMzhhM2VkMTNlYjEzZjlmYWM3OWIwNmNkZGIyZTNkZjcyMzljNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDYgQEAgUmVtb3RlTWVkaWFSZXNvdXJjZTo6UmVt
b3RlTWVkaWFSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciYgcmVtb3RlTWVkaWEK
IAogUmVtb3RlTWVkaWFSZXNvdXJjZTo6flJlbW90ZU1lZGlhUmVzb3VyY2UoKQogewotICAgIEFT
U0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIHN0b3AoKTsKICAgICBpZiAoIW1fcmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTcyLDEyICs3MSwxMiBAQCBi
b29sIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKSBjb25z
dAogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoIW1fY2xpZW50KQorICAgIGF1dG8gY2xpZW50ID0g
dGhpcy0+Y2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2s7
Ci0gICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRoaXMsIHJlc3BvbnNlLCBbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8gc2hvdWxkQ29udGludWUpIG11dGFibGUgewotICAgICAgICBB
U1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBjbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRo
aXMsIHJlc3BvbnNlLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gc2hvdWxkQ29udGludWUp
IG11dGFibGUgewogICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWVQ
b2xpY3lDaGVjazo6Tm8pCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zdG9wKCk7CiAKQEAg
LTg3LDM5ICs4NiwzOSBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogCiB2b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgbV9jbGllbnQtPnJlZGlyZWN0UmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUo
cmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYg
KGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+cmVkaXJlY3RS
ZWNlaXZlZCgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1
aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsKLSAgICBp
ZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50
LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIGlmIChhdXRvIGNsaWVudCA9IHRoaXMtPmNsaWVu
dCgpKQorICAgICAgICBjbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0
ZXNUb0JlU2VudCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAg
IG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEpOworICAgIGlmIChhdXRvIGNsaWVu
dCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywg
ZGF0YSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6YWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIG1fZGlkUGFzc0FjY2Vz
c0NvbnRyb2xDaGVjayA9IGZhbHNlOwotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCgqdGhpcywgZXJyb3IpOworICAgIGlmIChhdXRv
IGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmFjY2Vzc0NvbnRyb2xD
aGVja0ZhaWxlZCgqdGhpcywgZXJyb3IpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6
OmxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+bG9hZEZhaWxlZCgqdGhpcywgZXJyb3IpOworICAgIGlm
IChhdXRvIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmxvYWRGYWls
ZWQoKnRoaXMsIGVycm9yKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpsb2FkRmlu
aXNoZWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgbV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7Cisg
ICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+bG9h
ZEZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2M3MGQxYzQxNmJiOWMzYzliNTBiYjc5YjI3NWEy
M2JhYjliNDBlZi4uN2Y5ZmU3MjgwYjU5YzY0YTMyNTlhNzUwMWI2YTNlNmI3OWE1OTQxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIFJlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXI6OlJlbW90ZU1lZGlhUmVzb3VyY2VM
b2FkZXIoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcmVtb3RlTWVkaWFQbGF5ZXJQcm94eSkKICAg
ICA6IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eShyZW1vdGVNZWRpYVBsYXllclByb3h5KQogewor
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogfQogCiBSZW1vdGVNZWRpYVJlc291cmNlTG9h
ZGVyOjp+UmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcigpCkBAIC00Niw2ICs0Nyw3IEBAIFJlbW90
ZU1lZGlhUmVzb3VyY2VMb2FkZXI6On5SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyKCkKIAogUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIExvYWRPcHRpb25zIG9wdGlv
bnMpCiB7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAgICAgaWYgKCFtX3JlbW90ZU1l
ZGlhUGxheWVyUHJveHkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01NCw2ICs1Niw3
IEBAIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IFJlbW90ZU1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RSZXNvdXJjZShSZXNvdXJjCiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZUxv
YWRlcjo6c2VuZEgyUGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICAgICBpZiAoIW1fcmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKGludGVybmFsRXJyb3IodXJsKSkpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXgg
NDBlMzgxM2E0OGFhYjgzNzIzNzUzMjliYWM5NmExMjY2NzA4NzhlMi4uMzJlMTJmNTdlNDRkZWVj
M2EwNWIyNDc5NDc2ZTBmZDZiZDhkYzBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC00MSw5
ICs0MSwyMCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRl
cihSZW1vdGVNZWRpYVBsYXllclByb3h5Jik7CiAgICAgflJlbW90ZU1lZGlhUmVzb3VyY2VMb2Fk
ZXIoKTsKIAorICAgIHN0YXRpYyBSZWY8V1RGOjpXb3JrUXVldWU+IGRlZmF1bHRRdWV1ZSgpCisg
ICAgeworICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxSZWY8V1RGOjpXb3JrUXVldWU+PiBtZXNzYWdlUXVldWU7
CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKKyAgICAgICAgICAgIG1lc3Nh
Z2VRdWV1ZS5jb25zdHJ1Y3QoV29ya1F1ZXVlOjpjcmVhdGUoIlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlciIsIFdURjo6V29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQpKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybiBtZXNzYWdlUXVldWUuZ2V0KCk7CisgICAgfQorCiBwcml2YXRlOgog
ICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJj
ZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgTG9hZE9wdGlvbnMpIGZpbmFsOwogICAgIHZv
aWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOworICAg
IFJlZjxXVEY6OldvcmtRdWV1ZT4gdGFyZ2V0UXVldWUoKSBmaW5hbCB7IHJldHVybiBkZWZhdWx0
UXVldWUoKTsgfQogCiAgICAgV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5PiBtX3JlbW90
ZU1lZGlhUGxheWVyUHJveHk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKaW5kZXggMDFh
ZWI0Mjc5OGU5YWNiMTNhOTVkNTFlYmNjNjEzY2NhNjkyY2Q1YS4uOWJlNDRmNGM2NjA5MjllYTRi
NWU2MjE1ZDFmMDA4MDNkYzJjYTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCkBAIC0y
OCw5ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2UuaCIKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVz
b3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIApAQCAtMzgsMTIgKzM5LDI3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXI6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkKK1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpID0gZGVmYXVsdDsKK1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjp+UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKSA9IGRl
ZmF1bHQ7CisKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OnN0b3BMaXN0ZW5pbmdG
b3JJUEMoKQogeworICAgIC8vIFRPRE86IFdoYXQgaXMgdGhlIGJlc3QgcHJhY3RpY2UgdG8gY2Fs
bCB0aGlzPworICAgIGluaXRpYWxpemVDb25uZWN0aW9uKG51bGxwdHIpOwogfQogCi1SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjo6flJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkKK3ZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbikKIHsKKyAgICBpZiAobV9jb25uZWN0aW9uID09IGNvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1f
Y29ubmVjdGlvbi0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKworICAgIG1f
Y29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAg
ICBtX2Nvbm5lY3Rpb24tPmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgUmVtb3RlTWVk
aWFSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdFF1ZXVlKCksIHRoaXMpOwogfQogCiB2b2lkIFJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjphZGRNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVJl
c291cmNlJiByZW1vdGVNZWRpYVJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAppbmRleCAx
M2I3NmU4MGE0OThjOTQ1ZTFjNDZlOTFmZDg0Nzk4MmI1ZWQ3NDExLi5iZGNkYTcxZWQyNTBkMTI5
MjQxZWViODFmYWJmMDcxYWU5ZDhjMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgpAQCAt
NTAsMTYgKzUxLDE5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlTWVkaWFSZXNv
dXJjZTsKIAogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIKLSAgICA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCk7CiAgICAgflJlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyKCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CisKKyAg
ICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOwogCiAgICAgdm9p
ZCBhZGRNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVN
ZWRpYVJlc291cmNlJik7CiAgICAgdm9pZCByZW1vdmVNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlh
UmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
Ly8gSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
IAogcHJpdmF0ZToKQEAgLTcyLDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRGaW5p
c2hlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJik7CiAKICAgICBIYXNoTWFwPFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlm
aWVyLCBSZW1vdGVNZWRpYVJlc291cmNlKj4gbV9yZW1vdGVNZWRpYVJlc291cmNlczsKKyAgICBS
ZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBlYWRkODQ3MzBmMTFiNzczYjAzNTJkYmFhZmU4ZGRh
Y2RhODc2MDkzLi4xOGRiOTU2NWI0NGVmMDYzYmUxM2RiYzUyMmQxNTc3MDFhNTQwZTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0yMDEsMTUgKzIwMSwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwog
ICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBv
bGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEgb2Ygc2l6ZSAlbHUgZm9yICclcyciLCBkYXRhLnNpemUoKSwg
bV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBw
cm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVz
cG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRl
cmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBtX2ludGVy
Y2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5idWZmZXIoKSwgZW5j
b2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxl
ci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGhd
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAgICAgICAgICAg
ICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikp
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RG
TW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IGFjNTQyMmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVkOTQw
MTdjMGNmMTYuLjFhNTQwZjk3NzFmYTAxYzYwZmJkNTlkOTMxM2ZkMWFlY2ZmNGUzOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKElQQzo6U2hh
cmVkQnVmZmVyQ29weSYmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwo=
</data>
<flag name="commit-queue"
          id="476161"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450374</attachid>
            <date>2022-01-30 20:13:53 -0800</date>
            <delta_ts>2022-01-31 00:07:43 -0800</delta_ts>
            <desc>WIP6</desc>
            <filename>bug-235353-20220131151352.patch</filename>
            <type>text/plain</type>
            <size>97633</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNiNjk0MDRlYjJkYzc1MjVkYzBlMWFi
OTdmYzRlMDFiNDBhZTk4ODkuLjk3NzcwZmVmNDU2Y2QzZWVlMjU3NTNlZjBiOWI3ODU2ZDc5OTM2
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWV0YV0gUGVyZm9ybSBtZWRpYSBuZXR3b3JraW5n
IG9wZXJhdGlvbiBvZmYgdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUzNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWVCYXNlOjph
c3NlcnRJc09uV29ya1F1ZXVlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVl
dWVHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldv
cmtRdWV1ZSBjb25zdCk6CisKIDIwMjItMDEtMzAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRGVsZXRlIHJ1bnRpbWUgcHJlZmVyZW5jZSBmb3IgZW5hYmxpbmcg
aW5wdXQgZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU3MWZiNzBiYTY5MTM0N2FiODdiMmIzZTEyMzI3Zjk4
MjQ5MWE0ODcuLjhlYTYzZWU1MGI5OWQ5NjQxOWM3NGM4NmExZTBkMTIyYmIyMmNiNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBbbWV0YV0gUGVyZm9ybSBtZWRpYSBuZXR3b3JraW5nIG9w
ZXJhdGlvbiBvZmYgdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUzNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKwogMjAyMi0wMS0yOSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEZWxldGUgcnVudGltZSBwcmVm
ZXJlbmNlIGZvciBlbmFibGluZyByZXF1ZXN0IGFuaW1hdGlvbiBmcmFtZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApp
bmRleCAzNjhjMDY2ZDhmOTZiNGJjZTc0MzE4MjUyZTNjMDI2NjYxZDhmNjk3Li42NThkZTY5NmYw
MWNjZTU2YjNlM2IxMjg0YzM4NjVhMzIzYzUzNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtNTYsNiAr
NTYsOCBAQCBwdWJsaWM6CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlLmdldCgpOyB9CiAjZW5kaWYKIAorICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFzc2VydElzT25Xb3JrUXVldWUoKSBjb25zdDsKKwogcHJvdGVj
dGVkOgogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgewogICAgICAgICBTZXJpYWwsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKaW5kZXggZjlmNDdmMTFjNzg0NWQyNzVl
MTFjZjcyMGQwYTg1NjI1OWNiMjIxYy4uNTFiNGEzNDc0MTExMTQ0NmYxNGQzZTNmMmM0NDVkMzhi
YmJiZTY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2Eu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcApAQCAtOTIs
NiArOTIsMTMgQEAgdm9pZCBXb3JrUXVldWVCYXNlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogewog
fQogCit2b2lkIFdvcmtRdWV1ZUJhc2U6OmFzc2VydElzT25Xb3JrUXVldWUoKSBjb25zdAorewor
I2lmIEFTU0VSVF9FTkFCTEVECisgICAgZGlzcGF0Y2hfYXNzZXJ0X3F1ZXVlKG1fZGlzcGF0Y2hR
dWV1ZS5nZXQoKSk7CisjZW5kaWYKK30KKwogV29ya1F1ZXVlOjpXb3JrUXVldWUoT1NPYmplY3RQ
dHI8ZGlzcGF0Y2hfcXVldWVfdD4mJiBxdWV1ZSkKICAgICA6IFdvcmtRdWV1ZUJhc2UoV1RGTW92
ZShxdWV1ZSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1
ZUdlbmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNw
cAppbmRleCBkMjU3ZDNhNzIwNGVmYjFjYjNhNWQ4OTU0NjEwZjJiMDI3YThkZTUxLi4xYmVmYzIw
OGVjNDZhY2IwYjVkZWY5MDEwYzY0MzZiMjk0YmMzNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dl
bmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKQEAgLTg1LDQgKzg1LDkgQEAgUmVmPFdvcmtRdWV1
ZT4gV29ya1F1ZXVlOjpjb25zdHJ1Y3RNYWluV29ya1F1ZXVlKCkKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXb3JrUXVldWUoUnVuTG9vcDo6bWFpbigpKSk7CiB9CiAKK3ZvaWQgV29ya1F1ZXVl
QmFzZTo6YXNzZXJ0SXNPbldvcmtRdWV1ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCZjdXJyZW50
KCkgPT0gbV9ydW5Mb29wKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvODM5
MTAwMTIuZGlmZiBiL1NvdXJjZS9XZWJDb3JlLzgzOTEwMDEyLmRpZmYKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE5
YTRlNjM5NDUyZjdkOGE3NjI4Mjk0ZDQ0ZTUyZTNlMzliNGE5YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlLzgzOTEwMDEyLmRpZmYKQEAgLTAsMCArMSw4MSBAQAorZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKK2luZGV4IGRlNmRlYmUyYmQ0Yy4uYzY4NGM4NTZmYzgx
IDEwMDY0NAorLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCitAQCAtMTM5MSwxMyArMTM5
MSwyMyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVh
dGVTYW1wbGVCdWZmZXIoY29uc3QgQ01UaW1lJiBwcgorIHZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6QXVkaW9UcmFja0RhdGE6OnJlc2V0Q29tcGxldGVkKCkKKyB7CisgICAgIG1OdW1GcmFt
ZXNJbkNvbXBsZXRlQmxvY2sgPSAwOworLSAgICBtX3BhY2tldERlc2NyaXB0aW9ucy5jbGVhcigp
OworKyAgICBtX3BhY2tldFNpemVzLmNsZWFyKCk7CisrICAgIG1fcGFja2V0VGltaW5ncy5jbGVh
cigpOworICAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0ID0gMDsKKyAgICAgVHJhY2tEYXRh
OjpyZXNldENvbXBsZXRlZCgpOworIH0KKyAKKyB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiBy
ZWFkZXIsIGNvbnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCB1aW50NjRfdCogYnl0ZXNSZW1h
aW5pbmcsIGNvbnN0IENNVGltZSYgcHJlc2VudGF0aW9uVGltZSwgaW50IHNhbXBsZUNvdW50KQor
IHsKKysgICAgaWYgKG1fcGFja2V0VGltaW5ncy5zaXplKCkpIHsKKysgICAgICAgIGF1dG8mIGxh
c3RUaW1pbmcgPSBtX3BhY2tldFRpbWluZ3MubGFzdCgpOworKyAgICAgICAgaWYgKFBBTDo6Q01U
aW1lQ29tcGFyZShQQUw6OkNNVGltZUFkZChsYXN0VGltaW5nLmR1cmF0aW9uLCBsYXN0VGltaW5n
LnByZXNlbnRhdGlvblRpbWVTdGFtcCksIHByZXNlbnRhdGlvblRpbWUpKSB7CisrICAgICAgICAg
ICAgLy8gRGlzY29udGludWl0eSBlbmNvdW50ZXJlZCwgZW1pdCB0aGUgcHJldmlvdXNseSBkZW11
eGVkIHNhbXBsZXMuCisrICAgICAgICAgICAgY3JlYXRlU2FtcGxlQnVmZmVyKG1ldGFkYXRhLnBv
c2l0aW9uKTsKKysgICAgICAgICAgICByZXNldCgpOworKyAgICAgICAgfQorKyAgICB9CisrCisg
ICAgIGF1dG8gc3RhdHVzID0gcmVhZEZyYW1lRGF0YShyZWFkZXIsIG1ldGFkYXRhLCBieXRlc1Jl
bWFpbmluZyk7CisgICAgIGlmICghc3RhdHVzLmNvbXBsZXRlZF9vaygpKQorICAgICAgICAgcmV0
dXJuIHN0YXR1czsKK0BAIC0xNDA3LDcgKzE0MTcsNyBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVh
ZAorICAgICBpZiAobU51bUZyYW1lc0luQ29tcGxldGVCbG9jayA+IG1NYXhCbG9ja0J1ZmZlckNh
cGFjaXR5KQorICAgICAgICAgbU1heEJsb2NrQnVmZmVyQ2FwYWNpdHkgPSBtTnVtRnJhbWVzSW5D
b21wbGV0ZUJsb2NrOworIAorLSAgICBpZiAobV9wYWNrZXREZXNjcmlwdGlvbnMuaXNFbXB0eSgp
KQorKyAgICBpZiAobV9wYWNrZXRTaXplcy5pc0VtcHR5KCkpCisgICAgICAgICBtX3NhbXBsZVBy
ZXNlbnRhdGlvblRpbWUgPSBwcmVzZW50YXRpb25UaW1lOworIAorICAgICBpZiAoIWZvcm1hdERl
c2NyaXB0aW9uKCkpIHsKK0BAIC0xNDg0LDExICsxNDk0LDEzIEBAIHdlYm06OlN0YXR1cyBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJt
OjpSZWFkCisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgbV9wYWNrZXREZXNjcmlwdGlvbnMu
YXBwZW5kKHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCks
IDAsIHN0YXRpY19jYXN0PFVJbnQzMj4oKm1fY29tcGxldGVQYWNrZXRTaXplKSB9KTsKKysgICAg
bV9wYWNrZXRTaXplcy5hcHBlbmQoKm1fY29tcGxldGVQYWNrZXRTaXplKTsKKysgICAgbV9wYWNr
ZXRUaW1pbmdzLmFwcGVuZCh7IG1fcGFja2V0RHVyYXRpb24sIHByZXNlbnRhdGlvblRpbWUsIFBB
TDo6a0NNVGltZUludmFsaWQgfSk7CisgICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgKz0g
Km1fY29tcGxldGVQYWNrZXRTaXplOworICAgICBtX2NvbXBsZXRlUGFja2V0U2l6ZSA9IHN0ZDo6
bnVsbG9wdDsKKyAKKyAgICAgYXV0byBzYW1wbGVEdXJhdGlvbiA9IFBBTDo6Q01UaW1lR2V0U2Vj
b25kcyhQQUw6OkNNVGltZVN1YnRyYWN0KHByZXNlbnRhdGlvblRpbWUsIG1fc2FtcGxlUHJlc2Vu
dGF0aW9uVGltZSkpICsgUEFMOjpDTVRpbWVHZXRTZWNvbmRzKG1fcGFja2V0RHVyYXRpb24pICog
c2FtcGxlQ291bnQ7CisrCisgICAgIGlmIChzYW1wbGVEdXJhdGlvbiA+PSBtX21pbmltdW1TYW1w
bGVEdXJhdGlvbikgeworICAgICAgICAgY3JlYXRlU2FtcGxlQnVmZmVyKG1ldGFkYXRhLnBvc2l0
aW9uKTsKKyAgICAgICAgIHJlc2V0KCk7CitAQCAtMTUwMCwxMSArMTUxMiwxMSBAQCB3ZWJtOjpT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFt
ZURhdGEod2VibTo6UmVhZAorIAorIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9U
cmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGF0ZXN0
Qnl0ZVJhbmdlT2Zmc2V0KQorIHsKKy0gICAgaWYgKG1fcGFja2V0RGVzY3JpcHRpb25zLmlzRW1w
dHkoKSkKKysgICAgaWYgKG1fcGFja2V0U2l6ZXMuaXNFbXB0eSgpKQorICAgICAgICAgcmV0dXJu
OworIAorICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVCdWZmZXIgPSBudWxscHRyOwor
LSAgICBhdXRvIGVyciA9IFBBTDo6Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aFBh
Y2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2NvbXBsZXRlQmxvY2tCdWZm
ZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFja2V0RGVzY3JpcHRpb25z
LnNpemUoKSwgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lLCBtX3BhY2tldERlc2NyaXB0aW9ucy5k
YXRhKCksICZyYXdTYW1wbGVCdWZmZXIpOworKyAgICBhdXRvIGVyciA9IFBBTDo6Q01TYW1wbGVC
dWZmZXJDcmVhdGVSZWFkeShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2NvbXBsZXRlQmxvY2tCdWZm
ZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFja2V0U2l6ZXMuc2l6ZSgp
LCAxLCBtX3BhY2tldFRpbWluZ3MuZGF0YSgpLCBtX3BhY2tldFNpemVzLnNpemUoKSwgbV9wYWNr
ZXRTaXplcy5kYXRhKCksICZyYXdTYW1wbGVCdWZmZXIpOworICAgICBpZiAoZXJyKSB7CisgICAg
ICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUF1ZGlvU2FtcGxlQnVmZmVyQ3Jl
YXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVycik7CisgICAgICAg
ICByZXR1cm47CitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCitpbmRleCA0NTVjZmI1ODA0
NmMuLjVhMzc2MzUwMDdjZiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCitAQCAt
MjQyLDcgKzI0Miw4IEBAIHB1YmxpYzoKKyAgICAgICAgIHNpemVfdCBtX2N1cnJlbnRQYWNrZXRC
eXRlT2Zmc2V0IHsgMCB9OworICAgICAgICAgdWludDhfdCBtX2ZyYW1lc1BlclBhY2tldCB7IDAg
fTsKKyAgICAgICAgIFNlY29uZHMgbV9mcmFtZUR1cmF0aW9uIHsgMF9zIH07CistICAgICAgICBW
ZWN0b3I8QXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbj4gbV9wYWNrZXREZXNjcmlwdGlvbnM7
CisrICAgICAgICBWZWN0b3I8c2l6ZV90PiBtX3BhY2tldFNpemVzOworKyAgICAgICAgVmVjdG9y
PENNU2FtcGxlVGltaW5nSW5mbz4gbV9wYWNrZXRUaW1pbmdzOworICAgICAgICAgc2l6ZV90IG1O
dW1GcmFtZXNJbkNvbXBsZXRlQmxvY2sgeyAwIH07CisgICAgICAgICAvLyBGSVhNRTogMC41IC0g
MS4wIHNlY29uZHMgaXMgYSBiZXR0ZXIgZHVyYXRpb24gcGVyIHNhbXBsZSBidWZmZXIsIGJ1dCB1
c2UgMiBzZWNvbmRzIHNvIGF0IGxlYXN0IHRoZSBmaXJzdAorICAgICAgICAgLy8gc2FtcGxlIGJ1
ZmZlciB3aWxsIHBsYXkgdW50aWwgd2UgZml4IE1lZGlhU2FtcGxlQ3Vyc29yOjpjcmVhdGVTYW1w
bGVCdWZmZXIgdG8gZGVhbCB3aXRoIGBlbmRDdXJzb3JgLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFhMTdhNzBmYTU4YzcyMjhmNjM4OTM1
OWRkMGQzMzlkMGUwNWNkMmUuLjI2OGI4MTA5MTQzMmZiZGU1ODI4OGE4MTBjMDA4NzNmZDYxMjVl
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTE4MywyMCArMTgzLDIxIEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKCJDcm9zcy1v
cmlnaW4gbWVkaWEgcmVzb3VyY2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNl
IFNoYXJpbmcgcG9saWN5LiIpOwogICAgICAgICBtX2xvYWRlci0+ZG9jdW1lbnQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKICAgICAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENo
ZWNrID0gZmFsc2U7Ci0gICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50
LT5hY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoKnRoaXMsIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIGNvbnNvbGVNZXNzYWdlLmdldCgp
KSk7CisgICAgICAgIGlmIChhdXRvIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICAg
ICAgY2xpZW50LT5hY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoKnRoaXMsIFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIGNvbnNvbGVNZXNz
YWdlLmdldCgpKSk7CiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IG1fcmVzb3VyY2UtPm9wdGlvbnMoKS5t
b2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29yczsKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRp
b25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGF1dG8gc2hvdWxkQ29udGludWUpIG11dGFibGUg
eworICAgIGlmIChhdXRvIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKSB7CisgICAgICAgIGNsaWVu
dC0+cmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNh
bGxlci5yZWxlYXNlKCldIChhdXRvIHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICAgICAgaWYgKHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVl
UG9saWN5Q2hlY2s6Ok5vKQogICAgICAgICAgICAgICAgIHN0b3AoKTsKICAgICAgICAgfSk7Cisg
ICAgfQogCiAgICAgbV9sb2FkZXItPmFkZFJlc3BvbnNlRm9yVGVzdGluZyhyZXNwb25zZSk7CiB9
CkBAIC0yMDYsOCArMjA3LDggQEAgYm9vbCBNZWRpYVJlc291cmNlOjpzaG91bGRDYWNoZVJlc3Bv
bnNlKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2UKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8
TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAobV9jbGllbnQpCi0g
ICAgICAgIHJldHVybiBtX2NsaWVudC0+c2hvdWxkQ2FjaGVSZXNwb25zZSgqdGhpcywgcmVzcG9u
c2UpOworICAgIGlmIChhdXRvIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICByZXR1
cm4gY2xpZW50LT5zaG91bGRDYWNoZVJlc3BvbnNlKCp0aGlzLCByZXNwb25zZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTIxNiw4ICsyMTcsOCBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OnJl
ZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3Qm
JgogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsK
IAogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnJlZGlyZWN0UmVjZWl2ZWQoKnRoaXMsIFdU
Rk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+cmVk
aXJlY3RSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOwogfQpAQCAtMjI3LDggKzIyOCw4IEBAIHZvaWQgTWVkaWFSZXNv
dXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCB1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVz
b3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7
Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5
dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlz
LT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0
b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQpA
QCAtMjM2LDggKzIzNyw4IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBiCiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1l
ZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgaWYgKG1fY2xpZW50KQotICAg
ICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOworICAgIGlmIChhdXRv
IGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgq
dGhpcywgYnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKQEAgLTI0NSwxMSArMjQ2LDExIEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1lCiAgICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVm
UHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgaWYgKG1fY2xpZW50
KSB7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpIHsKICAgICAgICAgaWYg
KG1fcmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpCi0gICAgICAgICAgICBtX2NsaWVu
dC0+bG9hZEZhaWxlZCgqdGhpcywgbV9yZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKKyAgICAg
ICAgICAgIGNsaWVudC0+bG9hZEZhaWxlZCgqdGhpcywgbV9yZXNvdXJjZS0+cmVzb3VyY2VFcnJv
cigpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRGaW5pc2hlZCgq
dGhpcywgbWV0cmljcyk7CisgICAgICAgICAgICBjbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywg
bWV0cmljcyk7CiAgICAgfQogICAgIHN0b3AoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
LmgKaW5kZXggYzk1OGY4NDRkYWMxNDM5NGUyNGRlZmVhYmE3NTRmOWQ4YTgxMjk5My4uNzE5Zjc4
YmI5YmViMTk4MjE2ZmIzZDJjNGY0ZDQ2OTQyNGE5ZjA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmgKQEAgLTMxLDEwICszMSwxMiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3Rl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1
ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDEwICs0NSwxMSBAQCBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIAotY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IDogcHVibGljIFJlZkNv
dW50ZWQ8UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50PiB7CitjbGFzcyBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1NZWRp
YVJlc291cmNlQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1NZWRpYVJl
c291cmNlQ2xpZW50KCkgPSBkZWZhdWx0OwogCisgICAgLy8gVGhvc2UgbWV0aG9kcyBtdXN0IGJl
IGNhbGxlZCBvbiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2U6OnRhcmdldFF1ZXVlKCkKICAgICB2aXJ0
dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBv
bGljeUNoZWNrKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihTaG91
bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2Uo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJu
IHRydWU7IH0KQEAgLTY4LDkgKzcxLDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgUmVmUHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdCYm
LCBMb2FkT3B0aW9ucykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVS
TCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJv
cj4mJik+JiYpID0gMDsKIAorICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZHMuIFJl
dHVybiB0aGUgV29ya1F1ZXVlIG9uIHdoaWNoIHRoZSBQbGFmdG9ybU1lZGlhUmVzb3VyY2UgYW5k
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCBtdXN0IGJlIGJlIGNhbGxlZCBvbi4KKyAgICB2
aXJ0dWFsIFJlZjxXVEY6OldvcmtRdWV1ZT4gdGFyZ2V0UXVldWUoKSB7IHJldHVybiBXVEY6Oldv
cmtRdWV1ZTo6bWFpbigpOyB9CisgICAgLy8gcmVxdWVzdFJlc291cmNlIHdpbGwgYmUgY2FsbGVk
IG9uIHRoZSBtYWluIHRocmVhZCwgdGhlIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSBvYmplY3QgaXMg
dG8gYmUgdXNlZCBvbiB0YXJnZXRRdWV1ZSgpLgorICAgIHZpcnR1YWwgUmVmUHRyPFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmLCBMb2FkT3B0
aW9ucykgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
KCkgPSBkZWZhdWx0OwogfTsKQEAgLTgzLDExICs5MCwyMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHN0b3AoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xD
aGVjaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIHNldENsaWVudChSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50PiYmIGNsaWVudCkgeyBtX2NsaWVudCA9IFdU
Rk1vdmUoY2xpZW50KTsgfQotICAgIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCogY2xpZW50
KCkgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0KLQotcHJvdGVjdGVkOgotICAgIFJlZlB0cjxQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+IG1fY2xpZW50OworICAgIHZvaWQgc2V0Q2xpZW50
KFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+JiYgY2xpZW50KQorICAgIHsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgICAgICBtX2NsaWVudCA9IFdURk1v
dmUoY2xpZW50KTsKKyAgICB9CisgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVu
dD4gY2xpZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50OworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50PiBtX2NsaWVudCBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fbG9jayk7CisgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCBjZGFhMWIwOThjM2E1NGIxYTZj
NjFhNDVkZGRiZGYyYzY5M2Q2MmFiLi45YzNiNzAzN2U5YWIxZmEzODFlN2I2NzI3M2E4MjI2NWE0
ZDFmYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvT2JzZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIE9CSkNfQ0xBU1Mg
QVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JKQ19DTEFTUyBBVkFzc2V0VHJhY2s7CkBAIC00Njcs
NiArNDY4LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50
ZXJ2YWw+IG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxP
YnNlcnZlcjx2b2lkKCk+PiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8T2JzZXJ2ZXI8dm9pZCgpPj4gbV93YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURh
dGFXaWxsQ2hhbmdlT2JzZXJ2ZXI7CisgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3RhcmdldFF1
ZXVlIHsgV1RGOjpXb3JrUXVldWU6Om1haW4oKSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggYTA4ZGEwZjRmMTBlNGMzZTRhOWE3MWVlOGY1MzI1ZmE2NmUwOTFmZi4uZTBj
MTMwYzEyOGUzYmQ1NjIxYWE0MGY4ODEzYjBkOTM4OTc2M2U0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWwKICAgICAg
ICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpiYXNlVVJMIGVycm9yOm5pbF07CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBOU0FycmF5ICpwcm9wZXJ0eUtleXMgPSBA
W05TVVJMTmFtZUtleSwgTlNVUkxDb250ZW50TW9kaWZpY2F0aW9uRGF0ZUtleSwgTlNVUkxJc1Jl
Z3VsYXJGaWxlS2V5XTsKICAgICBOU0RpcmVjdG9yeUVudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBb
ZmlsZU1hbmFnZXIgZW51bWVyYXRvckF0VVJMOmJhc2VVUkwgaW5jbHVkaW5nUHJvcGVydGllc0Zv
cktleXM6CiAgICAgICAgIHByb3BlcnR5S2V5cyBvcHRpb25zOk5TRGlyZWN0b3J5RW51bWVyYXRp
b25Ta2lwc1N1YmRpcmVjdG9yeURlc2NlbmRhbnRzCkBAIC00NDcsOCArNDQ3LDExIEBAIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDKCkKIAogICAgIFtbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXSBzZXREZWxlZ2F0
ZTpuaWwgcXVldWU6MF07CiAKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVy
TWFwKQotICAgICAgICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CisgICAgZm9yIChhdXRvJiBw
YWlyIDogbV9yZXNvdXJjZUxvYWRlck1hcCkgeworICAgICAgICBtX3RhcmdldFF1ZXVlLT5kaXNw
YXRjaChbbG9hZGVyID0gcGFpci52YWx1ZV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBsb2Fk
ZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgaWYgKG1fdmlkZW9P
dXRwdXQpCiAgICAgICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKQEAgLTk2OSw3ICs5
NzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
QXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwsIFJldAogICAgICAgICB9CiAgICAgfQogCi0gICAg
QVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJjZUxvYWRlciA9IG1fYXZBc3NldC5nZXQoKS5y
ZXNvdXJjZUxvYWRlcjsKKyAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVy
ID0gW21fYXZBc3NldCByZXNvdXJjZUxvYWRlcl07CiAgICAgW3Jlc291cmNlTG9hZGVyIHNldERl
bGVnYXRlOm1fbG9hZGVyRGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsTG9hZGVyRGVsZWdhdGVR
dWV1ZSgpXTsKIAogICAgIGlmIChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmlzQVZGb3VuZGF0
aW9uTlNVUkxTZXNzaW9uRW5hYmxlZCgpCkBAIC05NzcsOCArOTgwLDEwIEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBV
UkwmIHVybCwgUmV0CiAgICAgICAgICYmIFtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKFVSTFNlc3Npb25EYXRhRGVsZWdhdGUpXQogICAgICAgICAmJiBbcmVzb3Vy
Y2VMb2FkZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uRGF0YURlbGVn
YXRlUXVldWUpXSkgewogICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
PiBtZWRpYVJlc291cmNlTG9hZGVyID0gcGxheWVyKCktPmNyZWF0ZVJlc291cmNlTG9hZGVyKCk7
Ci0gICAgICAgIGlmIChtZWRpYVJlc291cmNlTG9hZGVyKQorICAgICAgICBpZiAobWVkaWFSZXNv
dXJjZUxvYWRlcikgeworICAgICAgICAgICAgbV90YXJnZXRRdWV1ZSA9IG1lZGlhUmVzb3VyY2VM
b2FkZXItPnRhcmdldFF1ZXVlKCk7CiAgICAgICAgICAgICByZXNvdXJjZUxvYWRlci5VUkxTZXNz
aW9uID0gKE5TVVJMU2Vzc2lvbiAqKWFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uIGFsbG9j
XSBpbml0V2l0aFJlc291cmNlTG9hZGVyOiptZWRpYVJlc291cmNlTG9hZGVyIGRlbGVnYXRlOnJl
c291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGUgZGVsZWdhdGVRdWV1ZTpyZXNvdXJj
ZUxvYWRlci5VUkxTZXNzaW9uRGF0YURlbGVnYXRlUXVldWVdKS5nZXQoKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2Jz
ZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNoYXB0ZXJNZXRh
ZGF0YURpZENoYW5nZTopIG5hbWU6QVZBc3NldENoYXB0ZXJNZXRhZGF0YUdyb3Vwc0RpZENoYW5n
ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bV9hdkFzc2V0LmdldCgpXTsKQEAgLTIwNTksMjUgKzIwNjQs
MzQgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICNlbmRpZgogI2VuZGlmCiAKLSAgICBhdXRv
IHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUodGhpcywg
YXZSZXF1ZXN0KTsKKyAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyOjpjcmVhdGUodGhpcywgYXZSZXF1ZXN0LCBtX3RhcmdldFF1ZXVlKTsKICAgICBtX3Jl
c291cmNlTG9hZGVyTWFwLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCwgcmVzb3Vy
Y2VMb2FkZXIuY29weVJlZigpKTsKICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdChBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdCogYXZSZXF1ZXN0KQogewotICAgIFN0cmluZyBzY2hlbWUgPSBbW1thdlJlcXVlc3Qg
cmVxdWVzdF0gVVJMXSBzY2hlbWVdOworICAgIFJlZlB0ciByZXNvdXJjZUxvYWRlciA9IG1fcmVz
b3VyY2VMb2FkZXJNYXAuZ2V0KChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKIAotICAg
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9h
ZGVyTWFwLmdldCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCk7Ci0KLSAgICBpZiAocmVz
b3VyY2VMb2FkZXIpCi0gICAgICAgIHJlc291cmNlTG9hZGVyLT5zdG9wTG9hZGluZygpOworICAg
IGlmIChyZXNvdXJjZUxvYWRlcikgeworICAgICAgICBtX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChb
cmVzb3VyY2VMb2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+c3RvcExvYWRpbmcoKTsKKyAgICAgICAgfSk7Cisg
ICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFN0
b3BMb2FkaW5nUmVxdWVzdChBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqYXZSZXF1ZXN0
KQogeworICAgIFJlZlB0ciByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2FkZXJNYXAuZ2V0
KChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKICAgICBtX3Jlc291cmNlTG9hZGVyTWFw
LnJlbW92ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCk7CisKKyAgICBpZiAocmVzb3Vy
Y2VMb2FkZXIpIHsKKyAgICAgICAgbV90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3Jlc291cmNlTG9h
ZGVyID0gV1RGTW92ZShyZXNvdXJjZUxvYWRlcildICgpIG11dGFibGUgeworICAgICAgICAgICAg
cmVzb3VyY2VMb2FkZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmlzQXZhaWxhYmxlKCkKQEAg
LTI0NTQsNyArMjQ2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cmVzb2x2ZWRVUkxDaGFuZ2VkKCkKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKIHsKLSAgICBBVkFzc2V0
UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9hdkFzc2V0LmdldCgpLnJlc291cmNl
TG9hZGVyOworICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VMb2FkZXIgPSBbbV9h
dkFzc2V0IHJlc291cmNlTG9hZGVyXTsKICAgICBpZiAoIURlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6aXNBVkZvdW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkKICAgICAgICAgfHwgIVtyZXNv
dXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb24pXSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQ2OCw3ICsyNDgyLDcgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QK
IAogc3RkOjpvcHRpb25hbDxib29sPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CiB7
Ci0gICAgQVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJjZUxvYWRlciA9IG1fYXZBc3NldC5n
ZXQoKS5yZXNvdXJjZUxvYWRlcjsKKyAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNl
TG9hZGVyID0gW21fYXZBc3NldCByZXNvdXJjZUxvYWRlcl07CiAgICAgaWYgKCFEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OmlzQVZGb3VuZGF0aW9uTlNVUkxTZXNzaW9uRW5hYmxlZCgpCiAgICAg
ICAgIHx8ICFbcmVzb3VyY2VMb2FkZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxT
ZXNzaW9uKV0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggMGVmZWVhZWY1YjJkNzFiYzZk
NjcwNGRkMWI5NzVhY2JhZTExM2JiYy4uNmNlZDVjNzA5MGRiODY4OGJiNWNmNDE2ZDFjYzJhMjYx
YmMzNWMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmgKQEAgLTM1LDIwICszNSwyNSBAQAogCiBPQkpDX0NMQVNTIEFWQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0OwogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZU1lZGlhTG9h
ZGVyOwogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsK
K2NsYXNzIFBhcnNlZENvbnRlbnRSYW5nZTsKIGNsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAotY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiB7CitjbGFz
cyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdSZXF1ZXN0ICopOworICAgIHN0YXRpYyBSZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCosIFdURjo6V29ya1F1ZXVlJik7CiAgICAgdmlydHVhbCB+
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpA
QCAtNTYsMjMgKzYxLDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogcHJp
dmF0ZToKLSAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsK
KyAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCosIFdURjo6V29y
a1F1ZXVlJik7CiAKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjsK
ICAgICBmcmllbmQgY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI7CiAgICAgZnJpZW5k
IGNsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjsKIAotICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgLy8gUmV0dXJuIHRydWUgaWYg
c3RvcExvYWRpbmcoKSBnb3QgY2FsbGVkLCBpbmRpY2F0aW5nIHRoYXQgbm8gZnVydGhlciBwcm9j
ZXNzaW5nIHNob3VsZCBvY2N1ci4KKyAgICBib29sIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiwgaW50LCBjb25zdCBQYXJzZWRDb250ZW50UmFuZ2UmLCBzaXplX3QpOworICAgIGJvb2wg
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKKwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9p
ZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKKyAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM+IG1fcGFyZW50OyAvLyBPbmx5IGV2ZXIgZGVyZWZlcmVuY2VkIG9u
IHRoZSBtYWluIHRocmVhZC4KICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3Q+IG1fYXZSZXF1ZXN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcj4gbV9kYXRhVVJMTWVkaWFMb2FkZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENh
Y2hlZFJlc291cmNlTWVkaWFMb2FkZXI+IG1fcmVzb3VyY2VNZWRpYUxvYWRlcjsKLSAgICBXZWFr
UHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gbV9wbGF0Zm9ybU1lZGlhTG9hZGVyOwor
ICAgIFJlZlB0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IG1fcGxhdGZvcm1NZWRpYUxv
YWRlcjsKICAgICBzaXplX3QgbV9yZXNwb25zZU9mZnNldCB7IDAgfTsKKyAgICBSZWY8V1RGOjpX
b3JrUXVldWU+IG1fdGFyZ2V0UXVldWU7CisgICAgYm9vbCBtX2ludmFsaWRhdGVkIHsgZmFsc2Ug
fTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbQppbmRleCA0YjU5NGZmZjhkNmY0ZjcxYzc2ZDA1NmViYTEyOGY4NTgwN2Ri
NGI0Li5kMWJmY2Y0MmQzNDJiYWU5ZjI2NzhhZjlmYjEzMmZjYjMyODc0ZTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0z
OSw3ICszOSw5IEBACiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVkFzc2V0UmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgor
I2ltcG9ydCA8d3RmL1Njb3BlLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBv
cnQgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogQGlu
dGVyZmFjZSBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCAo
V2ViS2l0RXh0ZW5zaW9ucykKQEAgLTExOCw3ICsxMjAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
TWVkaWFMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdAogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNl
KTsKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNh
bGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBtX3BhcmVudC5yZXNwb25z
ZVJlY2VpdmVkKHJlc3BvbnNlKTsKKyAgICBtX3BhcmVudC5yZXNwb25zZVJlY2VpdmVkKHJlc3Bv
bnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLmNvbnRl
bnRSYW5nZSgpLCByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7CiB9CiAKIHZvaWQg
Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTM3LDExICsxMzksMTEg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGEKICAgICAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKCpkYXRhKTsKIH0KIAotY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4geworY2xhc3MgUGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBjcmVhdGUoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYpOwotICAgIH5QbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXIoKSB7IHN0b3Ao
KTsgfQorICAgIHN0YXRpYyBSZWZQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBjcmVh
dGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
JiwgUmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIH5QbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXIo
KSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHN0b3AoKTsKIApAQCAtMTYyLDEyMiArMTY0LDEzNCBA
QCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KIAog
ICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CisgICAgY29uc3QgV1RGOjpX
b3JrUXVldWUmIG1fdGFyZ2V0UXVldWU7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZT4gbV9yZXNvdXJjZTsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAot
V2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
K1JlZlB0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
IHsKICAgICBhdXRvIHJlc291cmNlID0gbG9hZGVyLnJlcXVlc3RSZXNvdXJjZShXVEZNb3ZlKHJl
cXVlc3QpLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkRpc2FsbG93
Q2FjaGluZyk7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgYXV0byogcmVzb3VyY2VQb2ludGVyID0gcmVzb3VyY2UuZ2V0KCk7CiAgICAgYXV0byBjbGll
bnQgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlciB7IHBhcmVudCwg
cmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSB9KTsKLSAgICBXZWFrUHRyIHJlc3VsdCA9IGNsaWVu
dDsKLQotICAgIHJlc291cmNlUG9pbnRlci0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXNvdXJjZVBvaW50ZXItPnNldENsaWVudChjbGllbnQu
Y29weVJlZigpKTsKKyAgICByZXR1cm4gY2xpZW50OwogfQogCiBQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXImIHBhcmVudCwgUmVmPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4mJiByZXNvdXJjZSkKICAg
ICA6IG1fcGFyZW50KHBhcmVudCkKKyAgICAsIG1fdGFyZ2V0UXVldWUocGFyZW50Lm1fdGFyZ2V0
UXVldWUpCiAgICAgLCBtX3Jlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKQogewogfQogCiB2b2lk
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6c3RvcCgpCiB7CisgICAgbV90YXJnZXRRdWV1
ZS5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBpZiAoIW1fcmVzb3VyY2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gcmVzb3VyY2UgPSBXVEZNb3ZlKG1fcmVzb3VyY2UpOwotICAg
IHJlc291cmNlLT5zdG9wKCk7Ci0gICAgcmVzb3VyY2UtPnNldENsaWVudChudWxscHRyKTsKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtyZXNvdXJjZSA9IFdURk1vdmUobV9yZXNvdXJjZSldICgpIG11
dGFibGUgeworICAgICAgICByZXNvdXJjZS0+c3RvcCgpOworICAgICAgICByZXNvdXJjZS0+c2V0
Q2xpZW50KG51bGxwdHIpOworICAgIH0pOwogfQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRD
b250aW51ZVBvbGljeUNoZWNrKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3BhcmVu
dC5yZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKKyAgICBtX3RhcmdldFF1ZXVlLmFzc2VydElz
T25Xb3JrUXVldWUoKTsKKworICAgIG1fcGFyZW50LnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2Uu
bWltZVR5cGUoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVzcG9uc2UuY29udGVudFJh
bmdlKCksIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKICAgICBjb21wbGV0aW9u
SGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCiB2b2lkIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKKyAgICBtX3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAg
IG1fcGFyZW50LmxvYWRGYWlsZWQoZXJyb3IpOwogfQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIHsKKyAgICBtX3RhcmdldFF1ZXVlLmFzc2VydElz
T25Xb3JrUXVldWUoKTsKKwogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCiB2b2lk
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIG1fdGFyZ2V0UXVl
dWUuYXNzZXJ0SXNPbldvcmtRdWV1ZSgpOworCiAgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7
CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQo
KSk7CiB9CiAKLWNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CitjbGFzcyBEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
JiwgUmVzb3VyY2VSZXF1ZXN0JiYpOwogCiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlciYgbV9wYXJlbnQ7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgIDogbV9wYXJlbnQo
cGFyZW50KQogewogICAgIFJFTEVBU0VfQVNTRVJUKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Rh
dGEoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChhdXRvIHJlc3Vs
dCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6
Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKLSAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAg
ICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkp
OwotICAgIH0KLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH1dIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpZiAoIW1fYnVmZmVyIHx8IG1fcmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAg
ICAgICAgLy8gZGF0YSBVUkxzIGNhbiBlbmQgdXAgYmVpbmcgdW5yZWFzb25hYmx5IGJpZyBzbyB3
ZSB3YW50IHRvIGF2b2lkIGhhdmluZyB0byBjYWxsIGlzb2xhdGVkQ29weSgpIGhlcmUgd2hlbiBw
YXNzaW5nIHRoZSBVUkwgU3RyaW5nIHRvIHRoZSBsb2FkaW5nIHRocmVhZC4KKyAgICAgICAgYXV0
byByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVy
bCgpLCAqcmVzdWx0KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX3BhcmVudC5tX3RhcmdldFF1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcGFyZW50ID0gUmVmIHsgbV9wYXJlbnQgfSwgYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpLCBtaW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCkuaXNvbGF0ZWRDb3B5
KCksIHN0YXR1cyA9ICByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCBjb250ZW50UmFuZ2UgPSBy
ZXNwb25zZS5jb250ZW50UmFuZ2UoKV0geworCisgICAgICAgICAgICBpZiAobV9wYXJlbnQubV9k
YXRhVVJMTWVkaWFMb2FkZXIuZ2V0KCkgIT0gdGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGlmIChtX3BhcmVudC5yZXNwb25zZVJlY2VpdmVkKG1pbWVUeXBlLCBz
dGF0dXMsIGNvbnRlbnRSYW5nZSwgYnVmZmVyLT5zaXplKCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgaWYgKG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcihidWZmZXIpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9w
YXJlbnQubG9hZEZpbmlzaGVkKCk7CisgICAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAg
IG1fcGFyZW50Lm1fdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwYXJlbnQgPSBSZWYgeyBt
X3BhcmVudCB9XSB7CisgICAgICAgICAgICBpZiAobV9wYXJlbnQubV9kYXRhVVJMTWVkaWFMb2Fk
ZXIuZ2V0KCkgIT0gdGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBt
X3BhcmVudC5sb2FkRmFpbGVkKFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2Vu
ZXJhbCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fcGFyZW50
LnJlc3BvbnNlUmVjZWl2ZWQobV9yZXNwb25zZSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKCptX2J1ZmZlcik7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7Ci0gICAgfSk7Cisg
ICAgICAgIH0pOworICAgIH0KIH0KIAotUmVmPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqYXZSZXF1ZXN0
KQorUmVmPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqYXZSZXF1ZXN0LCBXVEY6OldvcmtRdWV1ZSYgdGFy
Z2V0UXVldWUpCiB7CiAgICAgQVNTRVJUKGF2UmVxdWVzdCk7CiAgICAgQVNTRVJUKHBhcmVudCk7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKHBhcmVu
dCwgYXZSZXF1ZXN0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyKHBhcmVudCwgYXZSZXF1ZXN0LCB0YXJnZXRRdWV1ZSkpOwogfQogCi1XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0ICphdlJlcXVlc3QpCitXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OldlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFW
QXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QsIFdURjo6V29ya1F1ZXVlJiB0
YXJnZXRRdWV1ZSkKICAgICA6IG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fYXZSZXF1ZXN0KGF2
UmVxdWVzdCkKKyAgICAsIG1fdGFyZ2V0UXVldWUodGFyZ2V0UXVldWUpCiB7CiB9CiAKIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjo6fldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcigpCiB7Ci0gICAg
c3RvcExvYWRpbmcoKTsKIH0KIAogdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
TG9hZGluZygpCiB7CisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLCBiZWZvcmUg
YW55IGxvYWRlcnMgYXJlIGNyZWF0ZWQuCiAgICAgaWYgKG1fZGF0YVVSTE1lZGlhTG9hZGVyIHx8
IG1fcmVzb3VyY2VNZWRpYUxvYWRlciB8fCBtX3BsYXRmb3JtTWVkaWFMb2FkZXIgfHwgIW1fcGFy
ZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTMxMyw0OSArMzI3LDU2IEBAIHZvaWQgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAgIFttX2F2UmVxdWVzdCBmaW5p
c2hMb2FkaW5nV2l0aEVycm9yOjBdOwogfQogCisvLyBObyBjb2RlIGFjY2Vzc2luZyBgdGhpc2Ag
c2hvdWxkIGV2ZXIgYmUgdXNlZCBhZnRlciBjYWxsaW5nIHN0b3BMb2FkaW5nKCkuCiB2b2lkIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmcoKQogeworICAgIG1fdGFyZ2V0UXVl
dWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIG1fZGF0YVVSTE1lZGlhTG9hZGVyID0g
bnVsbHB0cjsKICAgICBtX3Jlc291cmNlTWVkaWFMb2FkZXIgPSBudWxscHRyOwogCiAgICAgaWYg
KG1fcGxhdGZvcm1NZWRpYUxvYWRlcikgewogICAgICAgICBtX3BsYXRmb3JtTWVkaWFMb2FkZXIt
PnN0b3AoKTsKLSAgICAgICAgbV9wbGF0Zm9ybU1lZGlhTG9hZGVyID0gbnVsbHB0cjsKKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbbG9hZGVyID0gV1RGTW92ZShtX3BsYXRmb3JtTWVkaWFMb2Fk
ZXIpXSB7IH0pOworICAgIH0KKyAgICBpZiAobV9hdlJlcXVlc3QpIHsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcGFyZW50ID0gbV9wYXJlbnQsIGludmFsaWRhdGVkID0gbV9pbnZhbGlkYXRl
ZCwgYXZSZXF1ZXN0ID0gV1RGTW92ZShtX2F2UmVxdWVzdCldICgpIG11dGFibGUgeworICAgICAg
ICAgICAgaWYgKCFpbnZhbGlkYXRlZCAmJiBwYXJlbnQpCisgICAgICAgICAgICAgICAgcGFyZW50
LT5kaWRTdG9wTG9hZGluZ1JlcXVlc3QoYXZSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgfSk7CiAg
ICAgfQotICAgIGlmIChtX3BhcmVudCAmJiBtX2F2UmVxdWVzdCkKLSAgICAgICAgbV9wYXJlbnQt
PmRpZFN0b3BMb2FkaW5nUmVxdWVzdChtX2F2UmVxdWVzdC5nZXQoKSk7CiB9CiAKIHZvaWQgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjppbnZhbGlkYXRlKCkKIHsKLSAgICBpZiAoIW1fcGFyZW50
KQotICAgICAgICByZXR1cm47CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1
ZSgpOwogCisgICAgaWYgKG1faW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2lu
dmFsaWRhdGVkID0gdHJ1ZTsKICAgICBtX3BhcmVudCA9IG51bGxwdHI7CisgICAgc3RvcExvYWRp
bmcoKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9XSAoKSBtdXRhYmxlIHsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+c3RvcExvYWRpbmcoKTsK
LSAgICB9KTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitib29sIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBp
bnQgc3RhdHVzLCBjb25zdCBQYXJzZWRDb250ZW50UmFuZ2UmIGNvbnRlbnRSYW5nZSwgc2l6ZV90
IGV4cGVjdGVkQ29udGVudExlbmd0aCkKIHsKLSAgICBpbnQgc3RhdHVzID0gcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7
CisKICAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkgewog
ICAgICAgICBbbV9hdlJlcXVlc3QgZmluaXNoTG9hZGluZ1dpdGhFcnJvcjowXTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBhdXRvJiBjb250ZW50
UmFuZ2UgPSByZXNwb25zZS5jb250ZW50UmFuZ2UoKTsKICAgICBpZiAoY29udGVudFJhbmdlLmlz
VmFsaWQoKSkKICAgICAgICAgbV9yZXNwb25zZU9mZnNldCA9IHN0YXRpY19jYXN0PE5TVUludGVn
ZXI+KGNvbnRlbnRSYW5nZS5maXJzdEJ5dGVQb3NpdGlvbigpKTsKIAogICAgIGlmIChBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCogY29udGVudEluZm8gPSBb
bV9hdlJlcXVlc3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0pIHsKLSAgICAgICAgU3RyaW5n
IHV0aSA9IFVUSUZyb21NSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICAgICAgU3Ry
aW5nIHV0aSA9IFVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSk7CiAKICAgICAgICAgW2NvbnRlbnRJ
bmZvIHNldENvbnRlbnRUeXBlOnV0aV07CiAKLSAgICAgICAgW2NvbnRlbnRJbmZvIHNldENvbnRl
bnRMZW5ndGg6Y29udGVudFJhbmdlLmlzVmFsaWQoKSA/IGNvbnRlbnRSYW5nZS5pbnN0YW5jZUxl
bmd0aCgpIDogcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCldOworICAgICAgICBbY29u
dGVudEluZm8gc2V0Q29udGVudExlbmd0aDpjb250ZW50UmFuZ2UuaXNWYWxpZCgpID8gY29udGVu
dFJhbmdlLmluc3RhbmNlTGVuZ3RoKCkgOiBleHBlY3RlZENvbnRlbnRMZW5ndGhdOwogICAgICAg
ICBbY29udGVudEluZm8gc2V0Qnl0ZVJhbmdlQWNjZXNzU3VwcG9ydGVkOllFU107CiAKICAgICAg
ICAgLy8gRG8gbm90IHNldCAiRW50aXJlTGVuZ3RoQXZhaWxhYmxlT25EZW1hbmQiIHRvIFlFUyB3
aGVuIHRoZSBsb2FkZXIgaXMgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIuCkBAIC0zNjgsMTIg
KzM4OSwxNiBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZQogICAgICAgICBpZiAoIVttX2F2UmVx
dWVzdCBkYXRhUmVxdWVzdF0pIHsKICAgICAgICAgICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2Fk
aW5nXTsKICAgICAgICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIC8v
IDxyZGFyOi8vcHJvYmxlbS8xMzk4NzQxNz4gU2V0IHRoZSBjb250ZW50VHlwZSBvZiB0aGUgY29u
dGVudEluZm9ybWF0aW9uUmVxdWVzdCB0byBhbiBlbXB0eQogICAgIC8vIHN0cmluZyB0byB0cmln
Z2VyIEFWQXNzZXQncyBwbGF5YWJsZSB2YWx1ZSB0byBjb21wbGV0ZSBsb2FkaW5nLgogICAgIGlm
IChbbV9hdlJlcXVlc3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0gJiYgIVtbbV9hdlJlcXVl
c3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0gY29udGVudFR5cGVdKQpAQCAtMzg1LDE1ICs0
MTAsMTkgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGYWlsZWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjps
b2FkRmluaXNoZWQoKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUo
KTsKKwogICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKICAgICBzdG9wTG9hZGluZygp
OwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0
SXNPbldvcmtRdWV1ZSgpOworCiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0
KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRh
UmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IENoZWNrIGZvciBwb3NzaWJsZSB1bnNpZ25lZCBvdmVyZmxvdy4KICAgICBBU1NFUlQoZGF0YVJl
cXVlc3QuY3VycmVudE9mZnNldCA+PSBkYXRhUmVxdWVzdC5yZXF1ZXN0ZWRPZmZzZXQpOwpAQCAt
NDI3LDEyICs0NTYsMTQgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmUKIAogICAgIC8vIFRoZXJl
IHdhcyBub3QgZW5vdWdoIGRhdGEgaW4gdGhlIGJ1ZmZlciB0byBzYXRpc2Z5IHRoZSBkYXRhIHJl
cXVlc3QuCiAgICAgaWYgKHJlbWFpbmluZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZGF0YVJlcXVlc3QuY3VycmVudE9mZnNldCArIGRh
dGFSZXF1ZXN0LnJlcXVlc3RlZExlbmd0aCA+PSBkYXRhUmVxdWVzdC5yZXF1ZXN0ZWRPZmZzZXQp
IHsKICAgICAgICAgW21fYXZSZXF1ZXN0IGZpbmlzaExvYWRpbmddOwogICAgICAgICBzdG9wTG9h
ZGluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4
IGI3YjA3ZmYxNDU0ZDU2MWEzMDIxMDhhZTMyMjkxZThmODM0MzdiZDkuLmYzODUxN2JkMzEzMWU4
MTc1MzQwMTQ0MmFjNDE4MTFiMmI5YWUzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0xMTgxLDcgKzExODEsOCBAQCBib29sIHdlYktpdFNyY1dv
dWxkVGFpbnRPcmlnaW4oV2ViS2l0V2ViU3JjKiBzcmMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBv
cmlnaW4pCiB7CiAgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFN
dXRleCB9OwogCi0gICAgYXV0byogY2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgPSByZWlu
dGVycHJldF9jYXN0PENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Kj4obWVtYmVycy0+cmVz
b3VyY2UtPmNsaWVudCgpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1lbWJlcnMtPnJlc291cmNlLT5j
bGllbnQoKTsKKyAgICBhdXRvKiBjYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCA9IHN0YXRp
Y19jYXN0PENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Kj4oY2xpZW50LmdldCgpKTsKICAg
ICBmb3IgKGF1dG8mIHJlc3BvbnNlT3JpZ2luIDogY2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQtPnNlY3VyaXR5T3JpZ2lucygpKSB7CiAgICAgICAgIGlmICghb3JpZ2luLmlzU2FtZU9yaWdp
bkRvbWFpbigqcmVzcG9uc2VPcmlnaW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgKaW5kZXggMjYyZTUzMTgwZDZkZDdjNGQxMzNkZGMxZGFmNTY1MmJkNmYzMWM3Ni4uOWRi
MGQ5NzQwNTIwZGRhMWYxMDY3OTczMTkwNzBhZmM0ZjhiNjI4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAt
MjQ3LDExICsyNDcsMTEgQEAgcHJpdmF0ZToKIAogcHJvdGVjdGVkOgogICAgIFVSTCBtX3VybDsK
LSAgICBBdG9tU3RyaW5nIG1fbWltZVR5cGU7CisgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAg
bG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoIHsgMCB9OwotICAgIEF0b21TdHJpbmcg
bV90ZXh0RW5jb2RpbmdOYW1lOwotICAgIEF0b21TdHJpbmcgbV9odHRwU3RhdHVzVGV4dDsKLSAg
ICBBdG9tU3RyaW5nIG1faHR0cFZlcnNpb247CisgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFt
ZTsKKyAgICBTdHJpbmcgbV9odHRwU3RhdHVzVGV4dDsKKyAgICBTdHJpbmcgbV9odHRwVmVyc2lv
bjsKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICBCb3g8TmV0d29y
a0xvYWRNZXRyaWNzPiBtX25ldHdvcmtMb2FkTWV0cmljczsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IuaAppbmRleCAwMGMyMDAwMjUxNTk5MWFjMGRkNGVkMzA5MTNiMjJkZGM2OGFjZTZmLi41
ODQ1YWUxNWQwYjkxNzA3YjcxMjEwOTY3MTc4OWU2M2ViMDVhNjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0zMiwx
NSArMzMsMTggQEAKIE9CSkNfQ0xBU1MgTlNVUkxSZXF1ZXN0OwogT0JKQ19DTEFTUyBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2s7CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgV29ya1F1ZXVl
OworfQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUGFyc2VkUmVxdWVzdFJhbmdlOwog
Y2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAot
Y2xhc3MgUmFuZ2VSZXNwb25zZUdlbmVyYXRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxSYW5nZVJlc3BvbnNlR2VuZXJhdG9yLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I+IHsKK2NsYXNzIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3IgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3Ip
OyB9CisgICAgc3RhdGljIFJlZjxSYW5nZVJlc3BvbnNlR2VuZXJhdG9yPiBjcmVhdGUoV1RGOjpX
b3JrUXVldWUmIHRhcmdldFF1ZXVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3IodGFyZ2V0UXVldWUpKTsgfQogICAgIH5SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
KCk7CiAKICAgICBib29sIHdpbGxTeW50aGVzaXplUmFuZ2VSZXNwb25zZXMoV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrICosIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKQEAgLTQ4LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlVGFz
ayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKik7CiAKIHByaXZhdGU6Ci0gICAgUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcigpOworICAgIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoV1RGOjpXb3Jr
UXVldWUmKTsKIAogICAgIHN0cnVjdCBEYXRhOwogICAgIGNsYXNzIE1lZGlhUmVzb3VyY2VDbGll
bnQ7CkBAIC01Nyw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXRhJik7CiAKICAg
ICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERhdGE+PiBtX21hcDsKKyAgICBSZWY8
V1RGOjpXb3JrUXVldWU+IG1fdGFyZ2V0UXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMTk4MTRhMzY1YzlmNjYxYTIx
YzIyOWFkYmQwNDYxMWMyMDk0N2U2NC4uMDMxM2Q0NWVlNTY4MTAxZDRjM2IyN2Q4NmYxOGEyMDc3
N2E4MjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDAsOCArNDAsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgIC8vIFRoZSBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yIGlzIHVzZWQgd2l0aCBhIFdvcmtRdWV1ZSB3aGljaCBjYW4g
ZG8gdGhyZWFkIGhvcGluZyBvdmVyIHRpbWUuCisgICAgLy8gVGhlIFJlc291cmNlUmVzcG9uc2Ug
Y29udGFpbnMgV1RGOjpTdHJpbmdzIHdoaWNoIG11c3QgZmlyc3QgYmUgY29waWVkIHZpYSBpc29s
YXRlZENvcHkoKS4KICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IG9yaWdpbmFsUmVzcG9u
c2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
Ojpmcm9tQ3Jvc3NUaHJlYWREYXRhKHJlc3BvbnNlLmNyb3NzVGhyZWFkRGF0YSgpKSkKICAgICAg
ICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC02MiwxOSArNjQsMTUgQEAgc3RydWN0
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2U+IHJlc291cmNlOwogfTsKIAotUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6UmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcigpCitSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpSYW5nZVJlc3BvbnNl
R2VuZXJhdG9yKFdURjo6V29ya1F1ZXVlJiB0YXJnZXRRdWV1ZSkKKyAgICA6IG1fdGFyZ2V0UXVl
dWUodGFyZ2V0UXVldWUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KIAotUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6flJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoKQotewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci19CitSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjp+UmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcigpID0gZGVmYXVsdDsKIAogc3RhdGljIFJlc291cmNlUmVzcG9uc2Ug
c3ludGhlc2l6ZWRSZXNwb25zZUZvclJhbmdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdp
bmFsUmVzcG9uc2UsIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcGFyc2VkUmVxdWVzdFJhbmdl
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gdG90YWxDb250ZW50TGVuZ3RoKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byBiZWdpbiA9IHBhcnNlZFJlcXVlc3RSYW5nZS5i
ZWdpbjsKICAgICBhdXRvIGVuZCA9IHBhcnNlZFJlcXVlc3RSYW5nZS5lbmQ7CiAKQEAgLTk1LDcg
KzkzLDcgQEAgc3RhdGljIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZUZvclJh
bmdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWcKIAogdm9pZCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElz
T25Xb3JrUXVldWUoKTsKICAgICBhdXRvKiBkYXRhID0gbV9tYXAuZ2V0KHRhc2sub3JpZ2luYWxS
ZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm47CkBAIC0xMDQsOCArMTAyLDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1v
dmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIAogdm9pZCBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVk
KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJh
bmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwg
Y29uc3QgRGF0YSYgZGF0YSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCisgICAg
bV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIGF1dG8gYnVmZmVyU2l6
ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2lu
KQogICAgICAgICByZXR1cm47CkBAIC0xMTUsOCArMTEyLDggQEAgdm9pZCBSYW5nZVJlc3BvbnNl
R2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNv
cmVOU1UKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGdp
dmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNp
emUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRy
IHsgKnRoaXMgfV0gewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8g
Z2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVy
U2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCB0YXJnZXRRdWV1ZSA9IG1fdGFyZ2V0UXVldWVdIHsKKyAgICAgICAgdGFy
Z2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRl
XSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBpZiAoIXRhc2tEYXRhKQpAQCAtMTM2LDE3ICsxMzMsMTUgQEAgdm9pZCBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVk
KFdlYkNvcmVOU1UKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZUluZGV4ID49IHJhbmdlLmVu
ZCkgewogICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpudWxscHRyIG1ldHJpY3M6
TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtn
ZW5lcmF0b3IsIHRhc2tdIHsKLSAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yKQotICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlbW92ZVRhc2sodGFzay5nZXQoKSk7Ci0gICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IpCisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5yZW1vdmVUYXNrKHRhc2suZ2V0KCkpOwogICAgICAgICB9CiAgICAgfTsKIAogICAg
IHN3aXRjaCAodGFza0RhdGEtPnJlc3BvbnNlU3RhdGUpIHsKICAgICBjYXNlIERhdGE6OlRhc2tE
YXRhOjpSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldDogewogICAgICAgICBhdXRvIHJl
c3BvbnNlID0gc3ludGhlc2l6ZWRSZXNwb25zZUZvclJhbmdlKGRhdGEub3JpZ2luYWxSZXNwb25z
ZSwgcmFuZ2UsIGV4cGVjdGVkQ29udGVudExlbmd0aCk7Ci0gICAgICAgIFt0YXNrIHJlc291cmNl
Om51bGxwdHIgcmVjZWl2ZWRSZXNwb25zZTpyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjpbZ2l2
ZUJ5dGVzVG9UYXNrID0gV1RGTW92ZShnaXZlQnl0ZXNUb1Rhc2spLCB0YXNrRGF0YSA9IFdlYWtQ
dHIgeyB0YXNrRGF0YSB9LCB0YXNrID0gcmV0YWluUHRyKHRhc2spXSAoV2ViQ29yZTo6U2hvdWxk
Q29udGludWVQb2xpY3lDaGVjayBzaG91bGRDb250aW51ZSkgeworICAgICAgICBbdGFzayByZXNv
dXJjZTpudWxscHRyIHJlY2VpdmVkUmVzcG9uc2U6cmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6
W2dpdmVCeXRlc1RvVGFzayA9IFdURk1vdmUoZ2l2ZUJ5dGVzVG9UYXNrKSwgdGFza0RhdGEgPSBX
ZWFrUHRyIHsgdGFza0RhdGEgfSwgdGFzayA9IHJldGFpblB0cih0YXNrKV0gKFdlYkNvcmU6OlNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgc2hvdWxkQ29udGludWUpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKHRhc2tEYXRhKQogICAgICAgICAgICAgICAgIHRhc2tEYXRhLT5yZXNwb25zZVN0
YXRlID0gRGF0YTo6VGFza0RhdGE6OlJlc3BvbnNlU3RhdGU6OlNlc3Npb25DYWxsZWRDb21wbGV0
aW9uSGFuZGxlcjsKICAgICAgICAgICAgIGlmIChzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrOjpZZXMpCkBAIC0xNjcsNyArMTYyLDYgQEAgdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1UKIAogc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnN0IERhdGEmIGRhdGEpCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hl
ZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCiAgICAg
ICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKQEAgLTE4MCw3ICsxNzQsNyBAQCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50
TGVuZ3RoRnJvbURhdGEoY29ucwogCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVS
ZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoRGF0YSYgZGF0YSkKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVl
dWUoKTsKICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGV4cGVjdGVkQ29udGVudExl
bmd0aEZyb21EYXRhKGRhdGEpOwogCiAgICAgZm9yIChhdXRvJiBwYWlyIDogZGF0YS50YXNrRGF0
YSkKQEAgLTE4OSw3ICsxODMsNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVS
ZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoRGF0YSYgZGF0YSkKIAogYm9vbCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjp3aWxsSGFuZGxlUmVxdWVzdChXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKnRhc2ssIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsK
ICAgICBhdXRvKiBkYXRhID0gbV9tYXAuZ2V0KHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzNCwxMyArMjI4LDEx
IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsCiAgICAgewotICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsCiAgICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7
CkBAIC0yNTIsNyArMjQ0LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5l
cmF0b3IpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gZGF0YSA9IG1fZ2VuZXJh
dG9yLT5tX21hcC50YWtlKG1fdXJsU3RyaW5nKTsKQEAgLTI2NCw3ICsyNTUsNiBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwKICAgICB7Ci0gICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgIFJlZlB0ciBnZW5lcmF0b3IgeyBtX2dlbmVyYXRvci5nZXQoKSB9
OwogICAgICAgICBpZiAoIWdlbmVyYXRvcikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3
ICsyNzIsNyBAQCBwcml2YXRlOgogCiBib29sIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OndpbGxT
eW50aGVzaXplUmFuZ2VSZXNwb25zZXMoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNr
LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fdGFyZ2V0
UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBOU1VSTFJlcXVlc3QgKm9yaWdpbmFs
UmVxdWVzdCA9IHRhc2sub3JpZ2luYWxSZXF1ZXN0OwogICAgIGlmICghb3JpZ2luYWxSZXF1ZXN0
LlVSTCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCBl
YTRhOWJmMjk3ODI5ZWJkMDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkLi40YjZhNzAxZWU5ZDA0OTBj
OGY2N2JkMTc4ZGQ5ZWQwYzdlZjcwZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtMjYs
NiArMjYsNyBAQAogI2ltcG9ydCAiUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oIgogI2ltcG9ydCAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+Cisj
aW1wb3J0IDx3dGYvQXRvbWljcy5oPgogI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KQEAgLTUwLDEy
ICs1MSwxNCBAQCBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRh
VmlldzsKIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xh
c3MgU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayA6IGJvb2w7CiB9CiAKK25hbWVzcGFjZSBXVEYg
eworY2xhc3MgV29ya1F1ZXVlOworfQorCiBlbnVtIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25D
T1JTQWNjZXNzQ2hlY2tSZXN1bHRzIDogdWludDhfdCB7CiAgICAgVW5rbm93biwKICAgICBQYXNz
LApAQCAtNjQsMjAgKzY3LDIyIEBAIGVudW0gY2xhc3MgV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNB
Y2Nlc3NDaGVja1Jlc3VsdHMgOiB1aW50OF90IHsKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
IAorLy8gQ3JlYXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQ7IHVzZWQgb24gdGFyZ2V0UXVldWUuCiBX
RUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7
CiBAcHJpdmF0ZQogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI+IF9sb2FkZXI7CisgICAgUmVmUHRyPFdURjo6V29ya1F1ZXVlPiBfdGFyZ2V0UXVldWU7CiAg
ICAgV2Vha09iakNQdHI8aWQ8TlNVUkxTZXNzaW9uRGVsZWdhdGU+PiBfZGVsZWdhdGU7CiAgICAg
UmV0YWluUHRyPE5TT3BlcmF0aW9uUXVldWU+IF9xdWV1ZTsKICAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IF9zZXNzaW9uRGVzY3JpcHRpb247Ci0gICAgSGFzaFNldDxSZXRhaW5QdHI8V2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrPj4gX2RhdGFUYXNrczsKLSAgICBIYXNoU2V0PFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4+IF9vcmlnaW5zOwogICAgIExvY2sgX2RhdGFUYXNrc0xvY2s7
Ci0gICAgQk9PTCBfaW52YWxpZGF0ZWQ7CisgICAgSGFzaFNldDxSZXRhaW5QdHI8V2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrPj4gX2RhdGFUYXNrczsgLy8gUHJvdGVjdGVkIGJ5IF9kYXRhVGFz
a3NMb2NrCisgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBfb3Jp
Z2luczsgLy8gQWNjZXNzZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIFdURjo6QXRvbWljPEJP
T0w+IF9pbnZhbGlkYXRlZDsKICAgICBOU1VJbnRlZ2VyIF9uZXh0VGFza0lkZW50aWZpZXI7Ci0g
ICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gX2ludGVybmFsUXVldWU7CisgICAgUmVm
UHRyPFdURjo6V29ya1F1ZXVlPiBfaW50ZXJuYWxRdWV1ZTsKICAgICBXZWJDb3JlTlNVUkxTZXNz
aW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0cyBfY29yc1Jlc3VsdHM7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I+IF9yYW5nZVJlc3BvbnNlR2VuZXJhdG9yOworICAg
IFJlZlB0cjxXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yPiBfcmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjsgLy8gT25seSBjcmVhdGVkL2FjY2Vzc2VkIG9uIF90YXJnZXRRdWV1ZQogfQogLSAo
aWQpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjooV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyJilsb2FkZXIgZGVsZWdhdGU6KGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4pZGVs
ZWdhdGUgZGVsZWdhdGVRdWV1ZTooTlNPcGVyYXRpb25RdWV1ZSopcXVldWU7CiBAcHJvcGVydHkg
KHJlYWRvbmx5LCByZXRhaW4pIE5TT3BlcmF0aW9uUXVldWUgKmRlbGVnYXRlUXVldWU7CkBAIC04
NSw2ICs5MCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lv
biA6IE5TT2JqZWN0IHsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TVVJMU2Vzc2lvbkNv
bmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb247CiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpz
ZXNzaW9uRGVzY3JpcHRpb247CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2tzOworQHByb3BlcnR5IChhc3NpZ24sIGF0b21pYykgV2ViQ29yZU5TVVJMU2Vz
c2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHMgY29yc1Jlc3VsdHM7CiAtICh2b2lkKWZpbmlzaFRh
c2tzQW5kSW52YWxpZGF0ZTsKIC0gKHZvaWQpaW52YWxpZGF0ZUFuZENhbmNlbDsKIC0gKEJPT0wp
d291bGRUYWludE9yaWdpbjooY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKW9yaWdpbjsK
QEAgLTEyMCwyMCArMTI2LDIyIEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5T
VVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpc2VuZEgyUGluZzooTlNVUkwgKil1cmwg
cG9uZ0hhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIE5TVGltZUlu
dGVydmFsIGludGVydmFsKSlwb25nSGFuZGxlcjsKIEBlbmQKIAorLy8gQ3JlYXRlZCBvbiBjb20u
YXBwbGUuYXZmb3VuZGF0aW9uLmN1c3RvbXVybC5uc3VybHNlc3Npb24KIEBpbnRlcmZhY2UgV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIDogTlNPYmplY3QgewotICAgIFdlYWtPYmpDUHRyPFdl
YkNvcmVOU1VSTFNlc3Npb24+IF9zZXNzaW9uOworICAgIFdlYWtPYmpDUHRyPFdlYkNvcmVOU1VS
TFNlc3Npb24+IF9zZXNzaW9uOyAvLyBBY2Nlc3NzZWQgZnJvbSBvcGVyYXRpb24gcXVldWUsIG1h
aW4gYW5kIGxvYWRlciB0aHJlYWQuIE11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCBPYmotQyBwcm9w
ZXJ0eS4KKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IF90YXJnZXRRdWV1ZTsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlPiBfcmVzb3VyY2U7Ci0gICAgUmV0YWlu
UHRyPE5TVVJMUmVzcG9uc2U+IF9yZXNwb25zZTsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25z
ZT4gX3Jlc3BvbnNlOyAvLyBTZXQgb24gb3BlcmF0aW9uIHF1ZXVlLgogICAgIE5TVUludGVnZXIg
X3Rhc2tJZGVudGlmaWVyOwotICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IF9vcmlnaW5hbFJl
cXVlc3Q7Ci0gICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gX2N1cnJlbnRSZXF1ZXN0OworICAg
IFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IF9vcmlnaW5hbFJlcXVlc3Q7IC8vIFNldCBvbiBjb25z
dHJ1Y3Rpb24sIG5ldmVyIG1vZGlmaWVkLgorICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IF9j
dXJyZW50UmVxdWVzdDsgLy8gU2V0IG9uIGNvbnN0cnVjdGlvbiwgbmV2ZXIgbW9kaWZpZWQuCiAg
ICAgaW50NjRfdCBfY291bnRPZkJ5dGVzUmVjZWl2ZWQ7CiAgICAgaW50NjRfdCBfY291bnRPZkJ5
dGVzU2VudDsKICAgICBpbnQ2NF90IF9jb3VudE9mQnl0ZXNFeHBlY3RlZFRvU2VuZDsKICAgICBp
bnQ2NF90IF9jb3VudE9mQnl0ZXNFeHBlY3RlZFRvUmVjZWl2ZTsKICAgICBOU1VSTFNlc3Npb25U
YXNrU3RhdGUgX3N0YXRlOwotICAgIFJldGFpblB0cjxOU0Vycm9yPiBfZXJyb3I7Ci0gICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBfdGFza0Rlc2NyaXB0aW9uOworICAgIFJldGFpblB0cjxOU0Vycm9y
PiBfZXJyb3I7IC8vIFVudXNlZCwgYWx3YXlzIG5pbC4KKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IF90YXNrRGVzY3JpcHRpb247IC8vIE9ubHkgc2V0IC8gcmVhZCBvbiB0aGUgdXNlcidzIHRocmVh
ZC4KICAgICBmbG9hdCBfcHJpb3JpdHk7CiB9CiAKQEAgLTE0NSw3ICsxNTMsNyBAQCBXRUJDT1JF
X0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiBAcHJv
cGVydHkgaW50NjRfdCBjb3VudE9mQnl0ZXNTZW50OwogQHByb3BlcnR5IGludDY0X3QgY291bnRP
ZkJ5dGVzRXhwZWN0ZWRUb1NlbmQ7CiBAcHJvcGVydHkgaW50NjRfdCBjb3VudE9mQnl0ZXNFeHBl
Y3RlZFRvUmVjZWl2ZTsKLUBwcm9wZXJ0eSBOU1VSTFNlc3Npb25UYXNrU3RhdGUgc3RhdGU7CitA
cHJvcGVydHkgKGFzc2lnbiwgYXRvbWljKSBOU1VSTFNlc3Npb25UYXNrU3RhdGUgc3RhdGU7CiBA
cHJvcGVydHkgKG51bGxhYmxlLCByZWFkb25seSwgY29weSkgTlNFcnJvciAqZXJyb3I7CiBAcHJv
cGVydHkgKG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqdGFza0Rlc2NyaXB0aW9uOwogQHByb3Bl
cnR5IGZsb2F0IHByaW9yaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IDNjOGJlMDhj
MjkzNGU1NGRhM2I3NDljYTZkYTM0ZWRhOTZkYzliOGIuLmM3ZDRmYzU3YzBkZWQ2M2Q1MjlmZTYx
NGFkNDdhNTQ1ZjRmZGUxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTM3LDkgKzM3
LDExIEBACiAjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi9M
b2NrLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVl
dWUuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CiAKICNwcmFnbWEgbWFyayAtIFByaXZh
dGUgZGVjbGFyYXRpb25zCiAKQEAgLTU2LDcgKzU4LDcgQEAgc3RhdGljIE5TRGF0ZSAqIF9fbnVs
bGFibGUgbmV0d29ya0xvYWRNZXRyaWNzRGF0ZShNb25vdG9uaWNUaW1lIHRpbWUpCiB9CiAKIEBp
bnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgOiBOU09i
amVjdAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYmKW1ldHJpY3M7CistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWV0cmljczoo
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpbWV0cmljcyBvblRhcmdldDooV1RGOjpXb3Jr
UXVldWUqKXdvcmtRdWV1ZTsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBO
U0RhdGUgKmZldGNoU3RhcnREYXRlOwogQHByb3BlcnR5IChudWxsYWJsZSwgY29weSwgcmVhZG9u
bHkpIE5TRGF0ZSAqZG9tYWluTG9va3VwU3RhcnREYXRlOwogQHByb3BlcnR5IChudWxsYWJsZSwg
Y29weSwgcmVhZG9ubHkpIE5TRGF0ZSAqZG9tYWluTG9va3VwRW5kRGF0ZTsKQEAgLTc5LDIxICs4
MSwyMyBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1Ry
YW5zYWN0aW9uTWV0cmljcyB7CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIF9tZXRy
aWNzOworICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gX3RhcmdldFF1ZXVlOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoTWV0cmljczooV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JiYpbWV0cmljcworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3Mgb25UYXJnZXQ6KFdURjo6V29ya1F1ZXVlKilxdWV1
ZQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcXVldWUtPmFzc2VydElzT25X
b3JrUXVldWUoKTsKKwogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIF9tZXRyaWNzID0gbWV0cmljczsKKyAgICBfbWV0cmljcyA9IFdURk1v
dmUobWV0cmljcyk7CisgICAgX3RhcmdldFF1ZXVlID0gcXVldWU7CiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVh
bGxvY2F0ZU9uTWFpblRocmVhZChXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0
cmljcy5jbGFzcywgc2VsZikpCi0gICAgICAgIHJldHVybjsKKyAgICBfdGFyZ2V0UXVldWUtPmRp
c3BhdGNoKFttZXRyaWNzID0gV1RGTW92ZShfbWV0cmljcyldIHsgfSk7CiAKICAgICBbc3VwZXIg
ZGVhbGxvY107CiB9CkBAIC0yMTcsMjggKzIyMSwyOSBAQCAtIChCT09MKW11bHRpcGF0aAogQGVu
ZAogCiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcyA6IE5TT2JqZWN0
Ci0tIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWV0cmljczooV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJiYpbWV0cmljczsKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzIG9uVGFyZ2V0Oihub25udWxsIFdURjo6
V29ya1F1ZXVlICopdGFyZ2V0UXVldWU7CiBAcHJvcGVydHkgKGNvcHksIHJlYWRvbmx5KSBOU0Fy
cmF5PE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKj4gKnRyYW5zYWN0aW9uTWV0
cmljczsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0
cmljcyB7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25N
ZXRyaWNzPiBfdHJhbnNhY3Rpb25NZXRyaWNzOworICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4g
X3RhcmdldFF1ZXVlOwogfQogCi0tIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWV0cmljczooV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpbWV0cmljcworLSAoaW5zdGFuY2V0eXBlKV9pbml0
V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3Mgb25UYXJn
ZXQ6KG5vbm51bGwgV1RGOjpXb3JrUXVldWUgKil0YXJnZXRRdWV1ZQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsK
IAogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwot
ICAgIF90cmFuc2FjdGlvbk1ldHJpY3MgPSBhZG9wdE5TKFtbV2ViQ29yZU5TVVJMU2Vzc2lvblRh
c2tUcmFuc2FjdGlvbk1ldHJpY3MgYWxsb2NdIF9pbml0V2l0aE1ldHJpY3M6V1RGTW92ZShtZXRy
aWNzKV0pOworICAgIF90YXJnZXRRdWV1ZSA9IHRhcmdldFF1ZXVlOworICAgIF90cmFuc2FjdGlv
bk1ldHJpY3MgPSBhZG9wdE5TKFtbV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1l
dHJpY3MgYWxsb2NdIF9pbml0V2l0aE1ldHJpY3M6V1RGTW92ZShtZXRyaWNzKSBvblRhcmdldDp0
YXJnZXRRdWV1ZV0pOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsK
LSAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoV2ViQ29y
ZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzLmNsYXNzLCBzZWxmKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgIF90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW21ldHJpY3MgPSBXVEZNb3ZlKF90cmFuc2FjdGlv
bk1ldHJpY3MpXSB7IH0pOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtMjQ2LDYgKzI1
MSw4IEBAIC0gKHZvaWQpZGVhbGxvYwogQGR5bmFtaWMgdHJhbnNhY3Rpb25NZXRyaWNzOwogLSAo
TlNBcnJheTxOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICo+ICopdHJhbnNhY3Rp
b25NZXRyaWNzCiB7CisgICAgLy8gVE9ETzogVGhpcyBpcyBsaWtlbHkgbm90IHRocmVhZC1zYWZl
LiBIb3cgdG8gaGFuZGxlIHRoaXMgb2JqZWN0PworICAgIC8vIEFjY2Vzc2VkIGZyb20gZGVsZWdh
dGUgdGhyZWFkLgogICAgIHJldHVybiBAWyAoTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0
cmljcyAqKXNlbGYtPl90cmFuc2FjdGlvbk1ldHJpY3MuZ2V0KCkgXTsKIH0KIApAQCAtMjYyLDcg
KzI2OSw3IEBAIC0gKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3ImKXJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I7CiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrICgpCi0tIChpZClpbml0V2l0aFNlc3Npb246KFdlYkNvcmVOU1VSTFNlc3Npb24gKilzZXNz
aW9uIGlkZW50aWZpZXI6KE5TVUludGVnZXIpaWRlbnRpZmllciByZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0OworLSAoaWQpaW5pdFdpdGhTZXNzaW9uOihXZWJDb3JlTlNVUkxTZXNzaW9u
ICopc2Vzc2lvbiBpZGVudGlmaWVyOihOU1VJbnRlZ2VyKWlkZW50aWZpZXIgcmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopcmVxdWVzdCB0YXJnZXRRdWV1ZTooV1RGOjpXb3JrUXVldWUqKXRhcmdldFF1
ZXVlOwogLSAodm9pZClfcmVzdGFydDsKIC0gKHZvaWQpX2NhbmNlbDsKIEBwcm9wZXJ0eSAoYXNz
aWduKSBXZWJDb3JlTlNVUkxTZXNzaW9uICogX051bGxhYmxlIHNlc3Npb247CkBAIC0yNzQsMjAg
KzI4MSwyNiBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKICNwcmFnbWEgbWFyayAtIFdlYkNvcmVO
U1VSTFNlc3Npb24KIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVOU1VSTFNlc3Npb24KK0BzeW50
aGVzaXplIGNvcnNSZXN1bHRzID0gX2NvcnNSZXN1bHRzOworCiAtIChpZClpbml0V2l0aFJlc291
cmNlTG9hZGVyOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImKWxvYWRlciBkZWxlZ2F0ZToo
aWQ8TlNVUkxTZXNzaW9uVGFza0RlbGVnYXRlPilpbkRlbGVnYXRlIGRlbGVnYXRlUXVldWU6KE5T
T3BlcmF0aW9uUXVldWUqKWluUXVldWUKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4g
bmlsOwogCiAgICAgQVNTRVJUKF9jb3JzUmVzdWx0cyA9PSBXZWJDb3JlTlNVUkxTZXNzaW9uQ09S
U0FjY2Vzc0NoZWNrUmVzdWx0czo6VW5rbm93bik7Ci0gICAgQVNTRVJUKCFfaW52YWxpZGF0ZWQp
OworICAgIEFTU0VSVCghX2ludmFsaWRhdGVkLmxvYWQoKSk7CiAKICAgICBfbG9hZGVyID0gJmxv
YWRlcjsKKyAgICBfdGFyZ2V0UXVldWUgPSBfbG9hZGVyLT50YXJnZXRRdWV1ZSgpOwogICAgIHNl
bGYuZGVsZWdhdGUgPSBpbkRlbGVnYXRlOwogICAgIF9xdWV1ZSA9IGluUXVldWUgPyBpblF1ZXVl
IDogW05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXTsKLSAgICBfaW50ZXJuYWxRdWV1ZSA9IGFk
b3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlTlNVUkxTZXNzaW9uIF9p
bnRlcm5hbFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7Ci0gICAgX3JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IgPSBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpjcmVhdGUoKTsKKyAgICBfaW50
ZXJuYWxRdWV1ZSA9IFdURjo6V29ya1F1ZXVlOjpjcmVhdGUoIldlYkNvcmVOU1VSTFNlc3Npb24g
X2ludGVybmFsUXVldWUiKTsKKyAgICBfdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtzdHJvbmdTZWxm
ID0gcmV0YWluUHRyKHNlbGYpXSB7CisgICAgICAgIHN0cm9uZ1NlbGYtPl9yYW5nZVJlc3BvbnNl
R2VuZXJhdG9yID0gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Y3JlYXRlKCpzdHJvbmdTZWxmLT5f
dGFyZ2V0UXVldWUpOworICAgIH0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yOTYsMTcg
KzMwOSwxOSBAQCAtICh2b2lkKWRlYWxsb2MKIHsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIoX2RhdGFUYXNrc0xvY2spOwotICAgICAgICBmb3IgKGF1dG8mIHRhc2sgOiBfZGF0
YVRhc2tzKQotICAgICAgICAgICAgW3Rhc2sgc2V0U2Vzc2lvbjpuaWxdOworICAgICAgICBfdGFy
Z2V0UXVldWUtPmRpc3BhdGNoKFtkYXRhVGFza3MgPSBXVEZNb3ZlKF9kYXRhVGFza3MpLCByYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yID0gV1RGTW92ZShfcmFuZ2VSZXNwb25zZUdlbmVyYXRvcildICgp
IG11dGFibGUgeworICAgICAgICAgICAgZm9yIChhdXRvJiYgdGFzayA6IGRhdGFUYXNrcykKKyAg
ICAgICAgICAgICAgICBbdGFzayBzZXRTZXNzaW9uOm5pbF07CisgICAgICAgIH0pOwogICAgIH0K
KyAgICBlbnN1cmVPbk1haW5UaHJlYWQoW2xvYWRlciA9IFdURk1vdmUoX2xvYWRlcildIHsgfSk7
CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKF9sb2FkZXIpXSB7Ci0g
ICAgfSk7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtIChpZCljb3B5V2l0aFpvbmU6KE5T
Wm9uZSAqKXpvbmUKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFVOVVNFRF9Q
QVJBTSh6b25lKTsKICAgICByZXR1cm4gW3NlbGYgcmV0YWluXTsKIH0KQEAgLTMxNSw2ICszMzAs
NyBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKIAogLSAodm9pZCl0YXNrQ29t
cGxldGVkOihXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKil0YXNrCiB7CisgICAgX3Rhcmdl
dFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgdGFzay5zZXNzaW9uID0gbmlsOwog
CiAgICAgewpAQCAtMzIyLDEyICszMzgsMTEgQEAgLSAodm9pZCl0YXNrQ29tcGxldGVkOihXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKil0YXNrCiAKICAgICAgICAgQVNTRVJUKF9kYXRhVGFz
a3MuY29udGFpbnModGFzaykpOwogICAgICAgICBfZGF0YVRhc2tzLnJlbW92ZSh0YXNrKTsKLSAg
ICAgICAgaWYgKCFfZGF0YVRhc2tzLmlzRW1wdHkoKSB8fCAhX2ludmFsaWRhdGVkKQorICAgICAg
ICBpZiAoIV9kYXRhVGFza3MuaXNFbXB0eSgpIHx8ICFfaW52YWxpZGF0ZWQubG9hZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNz
aW9uPiBzdHJvbmdTZWxmIHsgc2VsZiB9OwotICAgIFtzZWxmIGFkZERlbGVnYXRlT3BlcmF0aW9u
OltzdHJvbmdTZWxmXSB7CisgICAgW3NlbGYgYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1Nl
bGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgaWYgKFtzdHJvbmdTZWxmLmdldCgpLmRl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkaWRCZWNvbWVJ
bnZhbGlkV2l0aEVycm9yOildKQogICAgICAgICAgICAgW3N0cm9uZ1NlbGYuZ2V0KCkuZGVsZWdh
dGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKSBkaWRCZWNvbWVJ
bnZhbGlkV2l0aEVycm9yOm5pbF07CiAgICAgfV07CkBAIC0zMzUsOSArMzUwLDggQEAgLSAodm9p
ZCl0YXNrQ29tcGxldGVkOihXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKil0YXNrCiAKIC0g
KHZvaWQpYWRkRGVsZWdhdGVPcGVyYXRpb246KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgog
ewotICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uPiBzdHJvbmdTZWxmIHsgc2VsZiB9
OwogICAgIFJldGFpblB0cjxOU0Jsb2NrT3BlcmF0aW9uPiBvcGVyYXRpb24gPSBbTlNCbG9ja09w
ZXJhdGlvbiBibG9ja09wZXJhdGlvbldpdGhCbG9jazptYWtlQmxvY2tQdHIoV1RGTW92ZShmdW5j
dGlvbikpLmdldCgpXTsKLSAgICBkaXNwYXRjaF9hc3luYyhfaW50ZXJuYWxRdWV1ZS5nZXQoKSwg
W3N0cm9uZ1NlbGYsIG9wZXJhdGlvbl0geworICAgIF9pbnRlcm5hbFF1ZXVlLT5kaXNwYXRjaChb
c3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRp
b24pXSB7CiAgICAgICAgIFtzdHJvbmdTZWxmLmdldCgpLmRlbGVnYXRlUXVldWUgYWRkT3BlcmF0
aW9uOm9wZXJhdGlvbi5nZXQoKV07CiAgICAgICAgIFtvcGVyYXRpb24gd2FpdFVudGlsRmluaXNo
ZWRdOwogICAgIH0pOwpAQCAtMzQ1LDIxICszNTksMjQgQEAgLSAodm9pZClhZGREZWxlZ2F0ZU9w
ZXJhdGlvbjooRnVuY3Rpb248dm9pZCgpPiYmKWZ1bmN0aW9uCiAKIC0gKHZvaWQpdGFzazooV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzayBkaWRSZWNlaXZlQ09SU0FjY2Vzc0NoZWNr
UmVzdWx0OihCT09MKXJlc3VsdAogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOwogICAgIFVOVVNFRF9QQVJBTSh0YXNrKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAg
ICAgX2NvcnNSZXN1bHRzID0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3Vs
dHM6OkZhaWw7Ci0gICAgZWxzZSBpZiAoX2NvcnNSZXN1bHRzICE9IFdlYkNvcmVOU1VSTFNlc3Np
b25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpGYWlsKQotICAgICAgICBfY29yc1Jlc3VsdHMgPSBX
ZWJDb3JlTlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0czo6UGFzczsKKyAgICAgICAg
c2VsZi5jb3JzUmVzdWx0cyA9IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1
bHRzOjpGYWlsOworICAgIGVsc2UgaWYgKHNlbGYuY29yc1Jlc3VsdHMgIT0gV2ViQ29yZU5TVVJM
U2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6OkZhaWwpCisgICAgICAgIHNlbGYuY29yc1Jl
c3VsdHMgPSBXZWJDb3JlTlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0czo6UGFzczsK
IH0KIAogLSAodm9pZCl0YXNrOihXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKil0YXNrIGRp
ZFJlY2VpdmVSZXNwb25zZUZyb21PcmlnaW46KFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4m
JilvcmlnaW4KIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAg
ICBVTlVTRURfUEFSQU0odGFzayk7CiAgICAgX29yaWdpbnMuYWRkKFdURk1vdmUob3JpZ2luKSk7
CiB9CiAKIC0gKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3ImKXJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAg
ICByZXR1cm4gKl9yYW5nZVJlc3BvbnNlR2VuZXJhdG9yOwogfQogCkBAIC00MDYsNyArNDIzLDcg
QEAgLSAoUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJilsb2FkZXIKIEBkeW5hbWljIGRpZFBh
c3NDT1JTQWNjZXNzQ2hlY2tzOwogLSAoQk9PTClkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrcwogewot
ICAgIHJldHVybiBfY29yc1Jlc3VsdHMgPT0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3ND
aGVja1Jlc3VsdHM6OlBhc3M7CisgICAgcmV0dXJuIHNlbGYuY29yc1Jlc3VsdHMgPT0gV2ViQ29y
ZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlBhc3M7CiB9CiAKIC0gKEJPT0wp
d291bGRUYWludE9yaWdpbjooY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4gJilvcmlnaW4K
QEAgLTQyMCw3ICs0MzcsNyBAQCAtIChCT09MKXdvdWxkVGFpbnRPcmlnaW46KGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luICYpb3JpZ2luCiAKIC0gKHZvaWQpZmluaXNoVGFza3NBbmRJbnZh
bGlkYXRlCiB7Ci0gICAgX2ludmFsaWRhdGVkID0gWUVTOworICAgIF9pbnZhbGlkYXRlZC5zdG9y
ZShZRVMpOwogICAgIHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihfZGF0YVRhc2tzTG9j
ayk7CiAgICAgICAgIGlmICghX2RhdGFUYXNrcy5pc0VtcHR5KCkpCkBAIC00OTQsMTAgKzUxMSwx
MCBAQCAtICh2b2lkKWdldEFsbFRhc2tzV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U0FycmF5PF9fa2luZG9mIE5TVVJMU2Vzc2lvbgogCiAtIChOU1VSTFNlc3Npb25EYXRhVGFzayAq
KWRhdGFUYXNrV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICBpZiAo
X2ludmFsaWRhdGVkKQorICAgIGlmIChfaW52YWxpZGF0ZWQubG9hZCgpKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgYXV0byB0YXNrID0gYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFzayBhbGxvY10gaW5pdFdpdGhTZXNzaW9uOnNlbGYgaWRlbnRpZmllcjpfbmV4dFRhc2tJ
ZGVudGlmaWVyKysgcmVxdWVzdDpyZXF1ZXN0XSk7CisgICAgYXV0byB0YXNrID0gYWRvcHROUyhb
W1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBhbGxvY10gaW5pdFdpdGhTZXNzaW9uOnNlbGYg
aWRlbnRpZmllcjpfbmV4dFRhc2tJZGVudGlmaWVyKysgcmVxdWVzdDpyZXF1ZXN0IHRhcmdldFF1
ZXVlOl90YXJnZXRRdWV1ZS5nZXQoKV0pOwogICAgIHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxv
Y2tlcihfZGF0YVRhc2tzTG9jayk7CiAgICAgICAgIF9kYXRhVGFza3MuYWRkKHRhc2suZ2V0KCkp
OwpAQCAtNTE0LDcgKzUzMSw3IEBAIC0gKHZvaWQpc2VuZEgyUGluZzooTlNVUkwgKil1cmwgcG9u
Z0hhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKmVycm9yLCBOU1RpbWVJbnRlCiB7CiAgICAgY2Fs
bE9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgdXJsID0g
cmV0YWluUHRyKHVybCksIHBvbmdIYW5kbGVyID0gbWFrZUJsb2NrUHRyKHBvbmdIYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAKLSAgICAgICAgaWYgKF9pbnZhbGlkYXRlZCkKKyAgICAgICAgaWYgKF9p
bnZhbGlkYXRlZC5sb2FkKCkpCiAgICAgICAgICAgICByZXR1cm4gcG9uZ0hhbmRsZXIoYWRvcHRO
UyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpO
U1VSTEVycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKS5nZXQoKSwgMCk7CiAKICAgICAgICAgc2Vs
Zi5sb2FkZXIuc2VuZEgyUGluZyh1cmwuZ2V0KCksIFtzZWxmLCBzdHJvbmdTZWxmID0gV1RGTW92
ZShzdHJvbmdTZWxmKSwgcG9uZ0hhbmRsZXIgPSBXVEZNb3ZlKHBvbmdIYW5kbGVyKV0gKEV4cGVj
dGVkPFNlY29uZHMsIFJlc291cmNlRXJyb3I+JiYgcmVzdWx0KSBtdXRhYmxlIHsKQEAgLTUyNCw4
ICs1NDEsMTAgQEAgLSAodm9pZClzZW5kSDJQaW5nOihOU1VSTCAqKXVybCBwb25nSGFuZGxlcjoo
dm9pZCAoXikoTlNFcnJvciAqZXJyb3IsIE5TVGltZUludGUKICAgICAgICAgICAgICAgICBpbnRl
cnZhbCA9IHJlc3VsdC52YWx1ZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgZXJyb3IgPSByZXN1bHQuZXJyb3IoKTsKLSAgICAgICAgICAgIFtzZWxmIGFkZERl
bGVnYXRlT3BlcmF0aW9uOltwb25nSGFuZGxlciA9IFdURk1vdmUocG9uZ0hhbmRsZXIpLCBlcnJv
ciA9IFdURk1vdmUoZXJyb3IpLCBpbnRlcnZhbF0gewotICAgICAgICAgICAgICAgIHBvbmdIYW5k
bGVyKGVycm9yLmdldCgpLCBpbnRlcnZhbCk7CisgICAgICAgICAgICBbc2VsZiBhZGREZWxlZ2F0
ZU9wZXJhdGlvbjpbcG9uZ0hhbmRsZXIgPSBXVEZNb3ZlKHBvbmdIYW5kbGVyKSwgZXJyb3IgPSBX
VEZNb3ZlKGVycm9yKSwgaW50ZXJ2YWxdICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3BvbmdIYW5kbGVyID0gV1RGTW92ZShwb25nSGFuZGxlciksIGVycm9y
ID0gV1RGTW92ZShlcnJvciksIGludGVydmFsXSB7CisgICAgICAgICAgICAgICAgICAgIHBvbmdI
YW5kbGVyKGVycm9yLmdldCgpLCBpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICB9XTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC01OTcsOSArNjE2LDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVu
dCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCisgICAgV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrQ2xpZW50KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywg
V1RGOjpXb3JrUXVldWUmIHRhcmdldCkKICAgICAgICAgOiBtX3Rhc2sodGFzaykKKyAgICAgICAg
LCBtX3RhcmdldFF1ZXVlKHRhcmdldCkKICAgICB7CisgICAgICAgIG1fdGFyZ2V0UXVldWUtPmFz
c2VydElzT25Xb3JrUXVldWUoKTsKICAgICB9CiAKICAgICB2b2lkIGNsZWFyVGFzaygpOwpAQCAt
NjE0LDE5ICs2MzUsMTkgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIExvY2sgbV90YXNrTG9jazsKLSAgICBXZWFrT2JqQ1B0cjxXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2s+IG1fdGFzayBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fdGFza0xvY2sp
OworICAgIFdlYWtPYmpDUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gbV90YXNrOyAv
LyBPbmx5IGFjY2Vzc2VkIG9uIHRhcmdldCBxdWV1ZS4KKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+
IG1fdGFyZ2V0UXVldWU7CiB9OwogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudDo6Y2xlYXJUYXNrKCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9Owor
ICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBtX3Rhc2sgPSBu
dWxscHRyOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0
YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsKLSAg
ICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2Vy
dElzT25Xb3JrUXVldWUoKTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCkBA
IC02MzUsOCArNjU2LDggQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6
OmRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UKIAogdm9pZCBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgp
OwogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
bV90YXNrTG9jayB9OwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6Tm8pOwogCkBAIC02NDUsNyArNjY2
LDcgQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlc3BvbnNlUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJgogCiBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25X
b3JrUXVldWUoKTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC02NTQsNyArNjc1LDcgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6
OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKIAogdm9pZCBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25X
b3JrUXVldWUoKTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCkBAIC02NjMs
MjAgKzY4NCwxNiBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzbwogCiB2b2lkIFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFza0NsaWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFz
a0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAg
aWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJl
c291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6cmVzcG9uc2UgcmVxdWVzdDpXVEZNb3ZlKHJlcXVlc3Qp
IGNvbXBsZXRpb25IYW5kbGVyOiBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKGF1dG8mJiByZXF1ZXN0KSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7Ci0gICAgICAgIH0pOwotICAg
IH1dOworICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6cmVz
cG9uc2UgcmVxdWVzdDpXVEZNb3ZlKHJlcXVlc3QpIGNvbXBsZXRpb25IYW5kbGVyOldURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXTsKIH0KIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQ6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBMb2NrZXIgbG9j
a2VyIHsgbV90YXNrTG9jayB9OworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVl
dWUoKTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCkBAIC02ODUsNyArNzAy
LDcgQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmUKIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2tDbGllbnQ6OmxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1f
dGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAg
ICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIApAQCAtNjk0LDcgKzcxMSw3IEBAIHZv
aWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2FkRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYgcmVzb3VyCiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
Q2xpZW50Ojpsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIExvY2tlciBsb2NrZXIgeyBt
X3Rhc2tMb2NrIH07CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwog
ICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKQEAgLTcwNiwxMiArNzIzLDEzIEBA
IHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiByZXNvCiAjcHJhZ21hIG1hcmsgLSBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2sKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
awotLSAoaWQpaW5pdFdpdGhTZXNzaW9uOihXZWJDb3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBp
ZGVudGlmaWVyOihOU1VJbnRlZ2VyKWlkZW50aWZpZXIgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdAorLSAoaWQpaW5pdFdpdGhTZXNzaW9uOihXZWJDb3JlTlNVUkxTZXNzaW9uICopc2Vz
c2lvbiBpZGVudGlmaWVyOihOU1VJbnRlZ2VyKWlkZW50aWZpZXIgcmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCB0YXJnZXRRdWV1ZTooV1RGOjpXb3JrUXVldWUqKXRhcmdldFF1ZXVlCiB7
CiAgICAgc2VsZi50YXNrSWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAgc2VsZi5zZXNzaW9u
ID0gc2Vzc2lvbjsKICAgICBzZWxmLnN0YXRlID0gTlNVUkxTZXNzaW9uVGFza1N0YXRlU3VzcGVu
ZGVkOwogICAgIHNlbGYucHJpb3JpdHkgPSBOU1VSTFNlc3Npb25UYXNrUHJpb3JpdHlEZWZhdWx0
OworICAgIHNlbGYuc2Vzc2lvbiA9IHNlc3Npb247CisgICAgX3RhcmdldFF1ZXVlID0gdGFyZ2V0
UXVldWU7CiAKICAgICAvLyBDb3JlTWVkaWEgd2lsbCBleHBsaWNpdGx5IGFkZCBhIHVzZXIgYWdl
bnQgaGVhZGVyLiBSZW1vdmUgaWYgcHJlc2VudC4KICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlVVJM
UmVxdWVzdD4gbXV0YWJsZVJlcXVlc3Q7CkBAIC03MzYsNyArNzU0LDcgQEAgLSAoaWQpY29weVdp
dGhab25lOihOU1pvbmUgKil6b25lCiAKIC0gKHZvaWQpX3Jlc3RhcnQKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgp
OwogCiAgICAgW3NlbGYgX2NhbmNlbF07CiAKQEAgLTc0NiwyMyArNzY0LDI4IEBAIC0gKHZvaWQp
X3Jlc3RhcnQKICAgICBpZiAoW3NlbGYuc2Vzc2lvbiByYW5nZVJlc3BvbnNlR2VuZXJhdG9yXS53
aWxsSGFuZGxlUmVxdWVzdChzZWxmLCBzZWxmLm9yaWdpbmFsUmVxdWVzdCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIF9yZXNvdXJjZSA9IHNlbGYuc2Vzc2lvbi5sb2FkZXIucmVxdWVzdFJlc291
cmNlKHNlbGYub3JpZ2luYWxSZXF1ZXN0LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6Okxv
YWRPcHRpb246OkRpc2FsbG93Q2FjaGluZyk7Ci0gICAgaWYgKF9yZXNvdXJjZSkgewotICAgICAg
ICBfcmVzb3VyY2UtPnNldENsaWVudChhZG9wdFJlZigqbmV3IFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudChzZWxmKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8g
QSBuaWwgcmV0dXJuIGZyb20gcmVxdWVzdFJlc291cmNlIG1lYW5zIHRoZSBsb2FkIHdhcyBjYW5j
ZWxsZWQgYnkgYSBkZWxlZ2F0ZSBjbGllbnQKLSAgICBbc2VsZiBfcmVzb3VyY2U6bmlsIGxvYWRG
aW5pc2hlZFdpdGhFcnJvcjpSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNl
bGxhdGlvbikgbWV0cmljczp7IH1dOworICAgIGNhbGxPbk1haW5UaHJlYWQoW2xvYWRlciA9IFJl
ZiB7IHNlbGYuc2Vzc2lvbi5sb2FkZXIgfSwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcmVzb3VyY2UgPSBsb2FkZXItPnJlcXVlc3RSZXNv
dXJjZShbc3Ryb25nU2VsZiBvcmlnaW5hbFJlcXVlc3RdLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXI6OkxvYWRPcHRpb246OkRpc2FsbG93Q2FjaGluZyk7CisgICAgICAgIHN0cm9uZ1NlbGYt
Pl90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3Jlc291cmNlID0gV1RGTW92ZShyZXNvdXJjZSksIHN0
cm9uZ1NlbGZdICgpIG11dGFibGUgeworICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3Jlc291cmNl
ID0gcmVzb3VyY2U7CisgICAgICAgICAgICBpZiAocmVzb3VyY2UpCisgICAgICAgICAgICAgICAg
cmVzb3VyY2UtPnNldENsaWVudChhZG9wdFJlZigqbmV3IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudChzdHJvbmdTZWxmLmdldCgpLCAqc3Ryb25nU2VsZi0+X3RhcmdldFF1ZXVlKSkp
OworICAgICAgICAgICAgZWxzZSAvLyBBIG5pbCByZXR1cm4gZnJvbSByZXF1ZXN0UmVzb3VyY2Ug
bWVhbnMgdGhlIGxvYWQgd2FzIGNhbmNlbGxlZCBieSBhIGRlbGVnYXRlIGNsaWVudAorICAgICAg
ICAgICAgICAgIFtzdHJvbmdTZWxmIF9yZXNvdXJjZTpuaWwgbG9hZEZpbmlzaGVkV2l0aEVycm9y
OlJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKSBtZXRyaWNz
OiB7IH1dOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogLSAodm9pZClfY2FuY2VsCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25X
b3JrUXVldWUoKTsKKwogICAgIGlmIChfcmVzb3VyY2UpIHsKLSAgICAgICAgX3Jlc291cmNlLT5z
dG9wKCk7CiAgICAgICAgIF9yZXNvdXJjZS0+c2V0Q2xpZW50KG51bGxwdHIpOwotICAgICAgICBf
cmVzb3VyY2UgPSBuaWw7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jlc291cmNlID0gX3Jl
c291cmNlXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc291cmNlLT5zdG9wKCk7CisgICAg
ICAgIH0pOworICAgICAgICAvLyBUT0RPOiBTaG91bGQgX3Jlc291cmNlIHNob3VsZCBiZSBzZXQg
dG8gbmlsID8KICAgICB9CiAgICAgaWYgKGF1dG8gKnNlc3Npb24gPSBzZWxmLnNlc3Npb24pCiAg
ICAgICAgIFtzZXNzaW9uIHJhbmdlUmVzcG9uc2VHZW5lcmF0b3JdLnJlbW92ZVRhc2soc2VsZik7
CkBAIC03ODksNiArODEyLDcgQEAgLSAoTlNVUkxSZXF1ZXN0ICopY3VycmVudFJlcXVlc3QKIAog
LSAoTlNFcnJvciAqKWVycm9yCiB7CisgICAgLy8gVE9ETzogX2Vycm9yIGlzIG5ldmVyIHNldCBh
bmQgaXMgYWx3YXlzIG5pbC4KICAgICByZXR1cm4gYWRvcHROUyhbX2Vycm9yIGNvcHldKS5hdXRv
cmVsZWFzZSgpOwogfQogCkBAIC04MDQsMTIgKzgyOCwxNiBAQCAtICh2b2lkKXNldFRhc2tEZXNj
cmlwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogCiAtIChXZWJDb3JlTlNVUkxTZXNzaW9u
ICopc2Vzc2lvbgogewotICAgIHJldHVybiBfc2Vzc2lvbi5nZXQoKS5nZXQoKTsKKyAgICBAc3lu
Y2hyb25pemVkKHNlbGYpIHsKKyAgICAgICAgcmV0dXJuIF9zZXNzaW9uLmdldCgpLmF1dG9yZWxl
YXNlKCk7CisgICAgfQogfQogCiAtICh2b2lkKXNldFNlc3Npb246KFdlYkNvcmVOU1VSTFNlc3Np
b24gKilzZXNzaW9uCiB7Ci0gICAgX3Nlc3Npb24gPSBzZXNzaW9uOworICAgIEBzeW5jaHJvbml6
ZWQoc2VsZikgeworICAgICAgICBfc2Vzc2lvbiA9IHNlc3Npb247CisgICAgfQogfQogCiAtIChO
U1VSTFJlc3BvbnNlICopcmVzcG9uc2UKQEAgLTgyMiw3ICs4NTAsNyBAQCAtICh2b2lkKWNhbmNl
bAogICAgIGlmIChzZWxmLnN0YXRlID09IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZUNvbXBsZXRlZCkK
ICAgICAgICAgcmV0dXJuOwogICAgIHNlbGYuc3RhdGUgPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVD
YW5jZWxpbmc7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0
cihzZWxmKV0geworICAgIF90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFNlbGYgPSBy
ZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgW3Byb3RlY3RlZFNlbGYgX2NhbmNlbF07CiAgICAg
ICAgIFtwcm90ZWN0ZWRTZWxmIF9yZXNvdXJjZTpudWxscHRyIGxvYWRGaW5pc2hlZFdpdGhFcnJv
cjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJy
b3JDYW5jZWxsZWQgdXNlckluZm86bmlsXSBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1d
OwogICAgIH0pOwpAQCAtODMwLDcgKzg1OCw3IEBAIC0gKHZvaWQpY2FuY2VsCiAKIC0gKHZvaWQp
c3VzcGVuZAogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5Q
dHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPihzZWxmKV0geworICAgIF90YXJnZXRRdWV1
ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrPihzZWxmKV0gewogICAgICAgICAvLyBOU1VSTFNlc3Npb25EYXRhVGFza3MgbXVz
dCBzdGFydCBvdmVyIGFmdGVyIHN1c3BlbmRpbmcsIHNvIHdoaWxlCiAgICAgICAgIC8vIHdlIGNv
dWxkIGRlZmVyIGxvYWRpbmcgYXQgdGhpcyBwb2ludCwgaW5zdGVhZCBjYW5jZWwgYW5kIHJlc3Rh
cnQKICAgICAgICAgLy8gdXBvbiByZXN1bWUgc28gYXMgdG8gYWRoZXJlIHRvIE5TVVJMU2Vzc2lv
bkRhdGFUYXNrIHNlbWFudGljcy4KQEAgLTg0MSw3ICs4NjksNyBAQCAtICh2b2lkKXN1c3BlbmQK
IAogLSAodm9pZClyZXN1bWUKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxm
ID0gUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4oc2VsZildIHsKKyAgICBf
dGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzaz4oc2VsZildIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYu
Z2V0KCkuc3RhdGUgIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlU3VzcGVuZGVkKQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC04NTIsOSArODgwLDExIEBAIC0gKHZvaWQpcmVzdW1lCiAKIC0gKHZv
aWQpZGVhbGxvYwogewotICAgIGlmICghaXNNYWluVGhyZWFkKCkgJiYgX3Jlc291cmNlKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiBjbGllbnQgPSBfcmVzb3VyY2UtPmNsaWVudCgpKQotICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Kj4oY2xpZW50
KS0+Y2xlYXJUYXNrKCk7CisgICAgaWYgKF9yZXNvdXJjZSkgeworICAgICAgICBfdGFyZ2V0UXVl
dWUtPmRpc3BhdGNoKFtjbGllbnQgPSBfcmVzb3VyY2UtPmNsaWVudCgpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmIChjbGllbnQpCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Kj4oY2xpZW50LmdldCgpKS0+Y2xlYXJUYXNr
KCk7CisgICAgICAgIH0pOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXNvdXJjZSA9IFdU
Rk1vdmUoX3Jlc291cmNlKV0geyB9KTsKICAgICB9CiAKQEAgLTg3Myw2ICs5MDMsNyBAQCAtIChO
U0RpY3Rpb25hcnkgKilfdGltaW5nRGF0YQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25nKWJ5dGVz
U2VudCB0b3RhbEJ5dGVzVG9CZVNlbnQ6KHVuc2lnbmVkIGxvbmcgbG9uZyl0b3RhbEJ5dGVzVG9C
ZVNlbnQKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNl
KTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZXNTZW50KTsKICAgICBVTlVTRURfUEFSQU0odG90YWxC
eXRlc1RvQmVTZW50KTsKQEAgLTg4MSw5ICs5MTIsOSBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25n
KQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJl
Y2VpdmVkUmVzcG9uc2U6KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIGNvbXBsZXRp
b25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hl
Y2spPiYmKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgQVNTRVJUKHJlc3BvbnNlLnNvdXJjZSgp
ID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayB8fCByZXNwb25zZS5zb3VyY2Uo
KSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZSB8fCByZXNwb25zZS5zb3Vy
Y2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZUFmdGVyVmFsaWRhdGlv
biB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZp
Y2VXb3JrZXIpOworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAg
IEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3Vy
Y2UpOwotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBbc2VsZi5zZXNzaW9uIHRh
c2s6c2VsZiBkaWRSZWNlaXZlUmVzcG9uc2VGcm9tT3JpZ2luOlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUocmVzcG9uc2UudXJsKCkpXTsKICAgICBbc2VsZi5zZXNzaW9uIHRhc2s6c2VsZiBkaWRSZWNl
aXZlQ09SU0FjY2Vzc0NoZWNrUmVzdWx0OnJlc291cmNlID8gcmVzb3VyY2UtPmRpZFBhc3NBY2Nl
c3NDb250cm9sQ2hlY2soKSA6IFlFU107CiAgICAgc2VsZi5jb3VudE9mQnl0ZXNFeHBlY3RlZFRv
UmVjZWl2ZSA9IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtODkzLDggKzky
NCw5IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWRSZXNwb25zZTooY29uc3QgUmVzb3VyCiAgICAgICAgIF9yZXNvdXJjZSA9IG51bGxw
dHI7CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGlj
eUNoZWNrOjpZZXMpOwogICAgIH0KLSAgICAKKwogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYgeyBzZWxmIH07CisgICAgLy8gQWNjZXNzIHRvIHNl
bGYuc2Vzc2lvbiBpc24ndCB0aHJlYWQtc2FmZSA7IHdlYWstcG9pbnRlciBhY3Jvc3MgdGhyZWFk
LgogICAgIGlmICghc2VsZi5zZXNzaW9uKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6Tm8pOwogICAgIFtzZWxmLnNlc3Npb24gYWRk
RGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYsIHN0cm9uZ1Jlc3BvbnNlLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKQEAgLTkw
MiwxNCArOTM0LDE0IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgUmVzb3VyCiAKICAgICAgICAgaWQ8TlNV
UkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlm
ICghW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246
ZGF0YVRhc2s6ZGlkUmVjZWl2ZVJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOildKSB7Ci0gICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0
cm9uZ1NlbGYtPl90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3N0cm9uZ1NlbGYsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olll
cyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIFtkYXRhRGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2Vs
Zi5nZXQoKS5zZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1Nl
bGYuZ2V0KCkgZGlkUmVjZWl2ZVJlc3BvbnNlOnN0cm9uZ1Jlc3BvbnNlLmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbc3Ryb25nU2VsZiwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24pIG11dGFibGUgewotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
c3Ryb25nU2VsZiwgZGlzcG9zaXRpb24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3Rh
cmdldFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2VsZiwgZGlzcG9zaXRpb24sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIGlmIChkaXNwb3NpdGlvbiA9PSBOU1VSTFNlc3Npb25SZXNwb25zZUNhbmNlbCkK
ICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xp
Y3lDaGVjazo6Tm8pOwogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtOTIzLDE4ICs5NTUsMTgg
QEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZFJlc3BvbnNlOihjb25zdCBSZXNvdXIKIAogLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJilyZXNwb25zZQogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJj
ZSA9PSBfcmVzb3VyY2UpOwogCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQogICAgIC8v
IEZJWE1FOiByZW1vdmUgaWYgPHJkYXI6Ly9wcm9ibGVtLzIwMDAxOTg1PiBpcyBldmVyIHJlc29s
dmVkLgogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4m
JilkYXRhCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJj
ZSk7Ci0gICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9
IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKKyAgICBbc2VsZi5z
ZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50
T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lv
bkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0
ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6
ZGlkUmVjZWl2ZURhdGE6KV0pCkBAIC05NDQsMTEgKzk3NiwxMiBAQCAtICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRy
PE5TRGF0YQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJl
cXVlc3Q6KFJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVy
CiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7Ci0g
ICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IHJldGFp
blB0cihzZWxmKSwgcmVzcG9uc2UgPSByZXRhaW5QdHIocmVzcG9uc2UubnNVUkxSZXNwb25zZSgp
KSwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgIFtzZWxmLnNlc3Np
b24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHJl
c3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSksIHJlcXVlc3QgPSBy
ZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCB0YXJnZXRRdWV1ZSA9IF90YXJnZXRRdWV1ZV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICghW3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNs
YXNzXV0pIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAg
ICAgICAgdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTk1NiwxNCArOTg5LDE0
IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWRSZWRpcmVjdDooY29uc3QgUmVzb3VyCiAKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilz
dHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjp0YXNrOndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6KV0pIHsKLSAg
ICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJCbG9jayA9IG1ha2VCbG9ja1B0cihbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNVUkxSZXF1ZXN0
ICpuZXdSZXF1ZXN0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBlbnN1cmVPbk1haW5UaHJl
YWQoW3JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAg
ICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckJsb2NrID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0YXJnZXRRdWV1ZSA9IFdU
Rk1vdmUodGFyZ2V0UXVldWUpXShOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIHRhcmdldFF1ZXVlLT5kaXNwYXRjaChbcmVxdWVzdCA9IFJlc291cmNl
UmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICop
c3Ryb25nU2VsZi5nZXQoKSB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVz
cG9uc2UgKilyZXNwb25zZS5nZXQoKSBuZXdSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhU
VFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KSBjb21wbGV0aW9uSGFuZGxl
cjpjb21wbGV0aW9uSGFuZGxlckJsb2NrLmdldCgpXTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHRhcmdldFF1ZXVlLT5kaXNwYXRjaChbcmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVx
dWVzdCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTk3Miw2ICsxMDA1LDcgQEAg
LSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZFJlZGlyZWN0Oihjb25zdCBSZXNvdXIKIAogLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3IgbWV0cmljczooY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzCiB7CisgICAgX3Rh
cmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgaWYgKHNlbGYu
c3RhdGUgPT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlQ29tcGxldGVkKQogICAgICAgICByZXR1cm47
CkBAIC05ODAsNyArMTAxNCw3IEBAIC0gKHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjooTlNFcnJvCiAgICAgUmV0YWlu
UHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKICAg
ICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbj4gc3Ryb25nU2Vzc2lvbiB7IHNlbGYuc2Vz
c2lvbiB9OwogICAgIFJldGFpblB0cjxOU0Vycm9yPiBzdHJvbmdFcnJvciB7IGVycm9yIH07Ci0g
ICAgYXV0byB0YXNrTWV0cmljcyA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01l
dHJpY3MgYWxsb2NdIF9pbml0V2l0aE1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzKG1ldHJpY3Mp
XSk7CisgICAgYXV0byB0YXNrTWV0cmljcyA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9u
VGFza01ldHJpY3MgYWxsb2NdIF9pbml0V2l0aE1ldHJpY3M6bWV0cmljcy5pc29sYXRlZENvcHko
KSBvblRhcmdldDpfdGFyZ2V0UXVldWUuZ2V0KCldKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERl
bGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmLCBzdHJvbmdTZXNzaW9uLCBzdHJvbmdFcnJvciwg
dGFza01ldHJpY3MgPSBXVEZNb3ZlKHRhc2tNZXRyaWNzKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
IGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4gZGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9u
VGFza0RlbGVnYXRlPilzdHJvbmdTZXNzaW9uLmdldCgpLmRlbGVnYXRlOwogCkBAIC05OTAsNyAr
MTAyNCw3IEBAIC0gKHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjooTlNFcnJvCiAgICAgICAgIGlmIChbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVX
aXRoRXJyb3I6KV0pCiAgICAgICAgICAgICBbZGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNz
aW9uICopc3Ryb25nU2Vzc2lvbi5nZXQoKSB0YXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0
cm9uZ1NlbGYuZ2V0KCkgZGlkQ29tcGxldGVXaXRoRXJyb3I6c3Ryb25nRXJyb3IuZ2V0KCldOwog
Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb25dIHsK
KyAgICAgICAgc3Ryb25nU2VsZi0+X3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbc3Ryb25nU2VsZiwg
c3Ryb25nU2Vzc2lvbl0gewogICAgICAgICAgICAgW3N0cm9uZ1Nlc3Npb24gdGFza0NvbXBsZXRl
ZDpzdHJvbmdTZWxmLmdldCgpXTsKICAgICAgICAgfSk7CiAgICAgfV07CkBAIC05OTgsMTYgKzEw
MzIsMTkgQEAgLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOihOU0Vycm8KIAogLSAodm9pZClyZXNvdXJjZTooUGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRo
RXJyb3I6KGNvbnN0IFJlc291cmNlRXJyb3ImKWVycm9yCiB7CisgICAgX3RhcmdldFF1ZXVlLT5h
c3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgW3NlbGYgX3Jlc291cmNlOnJlc291cmNlIGxvYWRG
aW5pc2hlZFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCkgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJp
Y3MgeyB9XTsKIH0KIAogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9yJillcnJvcgog
eworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIFtzZWxmIF9y
ZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpIG1l
dHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CiB9CiAKIC0gKHZvaWQpcmVzb3VyY2VGaW5p
c2hlZDooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBtZXRyaWNzOihjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25X
b3JrUXVldWUoKTsKICAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0
aEVycm9yOm5pbCBtZXRyaWNzOm1ldHJpY3NdOwogfQogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDYx
NTEwMjY5NDE4Y2NlMjM1MTZkYzM1YTc2YWY2Y2RmZTRhNTFhZDEuLmUyYTZmMGEwYTdlZTEzZDcw
MmYxZDVkMjQ5YTk1MDYxM2Q2MDdhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ1NSw4ICs0NTUsMTEg
QEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW90ZUF1ZGlvRGVzdGluYXRpb24KIAogUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIm
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkK
IHsKLSAgICBpZiAoIW1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIpCisgICAgQVNTRVJUKGlz
TWFpblJ1bkxvb3AoKSk7CisgICAgaWYgKCFtX3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKSB7
CiAgICAgICAgIG1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgPSBtYWtlVW5pcXVlPFJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyPigpOworICAgICAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyLT5pbml0aWFsaXplQ29ubmVjdGlvbigmY29ubmVjdGlvbigpKTsKKyAgICB9CiAKICAg
ICByZXR1cm4gKm1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5k
ZXggN2Y1MTJjNmMxMWE4ZTcxMDhjZjAwNjJiNTg0ZDI3YjU4OTA4ZDE4Zi4uNzMzOGEzZWQxM2Vi
MTNmOWZhYzc5YjA2Y2RkYjJlM2RmNzIzOWM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEs
NiBAQCBSZW1vdGVNZWRpYVJlc291cmNlOjpSZW1vdGVNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyJiByZW1vdGVNZWRpYQogCiBSZW1vdGVNZWRpYVJlc291cmNlOjp+UmVt
b3RlTWVkaWFSZXNvdXJjZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAgICAg
c3RvcCgpOwogICAgIGlmICghbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcikKICAgICAgICAg
cmV0dXJuOwpAQCAtNzIsMTIgKzcxLDEyIEBAIGJvb2wgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGlk
UGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJj
ZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9v
bCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3Vs
ZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICgh
bV9jbGllbnQpCisgICAgYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKTsKKyAgICBpZiAoIWNs
aWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNr
ID0gZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsKLSAgICBtX2NsaWVudC0+cmVzcG9uc2VSZWNl
aXZlZCgqdGhpcywgcmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBzaG91bGRD
b250aW51ZSkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAg
IGNsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChzaG91
bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpObykKICAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPnN0b3AoKTsKIApAQCAtODcsMzkgKzg2LDM5IEBAIHZvaWQgUmVtb3Rl
TWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgYm9vCiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZl
ZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVk
aXJlY3RSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQo
KSkKKyAgICAgICAgY2xpZW50LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVl
c3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc1RvQmVTZW50KQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAg
aWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGF0YVNl
bnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAogdm9pZCBSZW1v
dGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhp
cywgZGF0YSk7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAg
IGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7CiAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7Ci0gICAg
aWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
KCp0aGlzLCBlcnJvcik7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisg
ICAgICAgIGNsaWVudC0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKCp0aGlzLCBlcnJvcik7CiB9
CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5sb2Fk
RmFpbGVkKCp0aGlzLCBlcnJvcik7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50
KCkpCisgICAgICAgIGNsaWVudC0+bG9hZEZhaWxlZCgqdGhpcywgZXJyb3IpOwogfQogCiB2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2U6OmxvYWRGaW5pc2hlZChjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bG9h
ZEZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5j
bGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBj
YzcwZDFjNDE2YmI5YzNjOWI1MGJiNzliMjc1YTIzYmFiOWI0MGVmLi43ZjlmZTcyODBiNTljNjRh
MzI1OWE3NTAxYjZhM2U2Yjc5YTU5NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0z
OCw2ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogUmVtb3RlTWVkaWFSZXNvdXJj
ZUxvYWRlcjo6UmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcihSZW1vdGVNZWRpYVBsYXllclByb3h5
JiByZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAgIDogbV9yZW1vdGVNZWRpYVBsYXllclByb3h5
KHJlbW90ZU1lZGlhUGxheWVyUHJveHkpCiB7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
CiB9CiAKIFJlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXI6On5SZW1vdGVNZWRpYVJlc291cmNlTG9h
ZGVyKCkKQEAgLTQ2LDYgKzQ3LDcgQEAgUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcjo6flJlbW90
ZU1lZGlhUmVzb3VyY2VMb2FkZXIoKQogCiBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBS
ZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgTG9hZE9wdGlvbnMgb3B0aW9ucykKIHsKKyAgICBBU1NFUlQoaXNNYWluUnVu
TG9vcCgpKTsKICAgICBpZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTU0LDYgKzU2LDcgQEAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNv
dXJjZT4gUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKFJlc291cmMK
IAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyOjpzZW5kSDJQaW5nKGNvbnN0IFVSTCYg
dXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFJlc291cmNlRXJy
b3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIEFTU0VSVChpc01haW5SdW5Mb29w
KCkpOwogICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0MGUzODEzYTQ4YWFiODM3MjM3NTMyOWJhYzk2
YTEyNjY3MDg3OGUyLi4zMmUxMmY1N2U0NGRlZWMzYTA1YjI0Nzk0NzZlMGZkNmJkOGRjMGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTQxLDkgKzQxLDIwIEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmKTsK
ICAgICB+UmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcigpOwogCisgICAgc3RhdGljIFJlZjxXVEY6
OldvcmtRdWV1ZT4gZGVmYXVsdFF1ZXVlKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJlZjxX
VEY6OldvcmtRdWV1ZT4+IG1lc3NhZ2VRdWV1ZTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgW10geworICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmNvbnN0cnVjdChXb3JrUXVldWU6
OmNyZWF0ZSgiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyIiwgV1RGOjpXb3JrUXVldWU6OlFP
Uzo6QmFja2dyb3VuZCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2VRdWV1
ZS5nZXQoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBMb2FkT3B0aW9ucykgZmluYWw7CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPiYmKT4mJikgZmluYWw7CisgICAgUmVmPFdURjo6V29ya1F1ZXVlPiB0YXJnZXRR
dWV1ZSgpIGZpbmFsIHsgcmV0dXJuIGRlZmF1bHRRdWV1ZSgpOyB9CiAKICAgICBXZWFrUHRyPFJl
bW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCAwMWFlYjQyNzk4ZTlhY2IxM2E5NWQ1MWViY2M2MTNj
Y2E2OTJjZDVhLi45YmU0NGY0YzY2MDkyOWVhNGI1ZTYyMTVkMWYwMDgwM2RjMmNhN2JkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTI4LDkgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCkBA
IC0zOCwxMiArMzksMjcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6UmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIoKQorUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OlJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyKCkgPSBkZWZhdWx0OworUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6On5SZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlcigpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcjo6c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7CisgICAgLy8gVE9ETzogV2hh
dCBpcyB0aGUgYmVzdCBwcmFjdGljZSB0byBjYWxsIHRoaXM/CisgICAgaW5pdGlhbGl6ZUNvbm5l
Y3Rpb24obnVsbHB0cik7CiB9CiAKLVJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjp+UmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIoKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQogeworICAg
IGlmIChtX2Nvbm5lY3Rpb24gPT0gY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpOworCisgICAgbV9jb25uZWN0aW9uID0gY29ubmVjdGlvbjsKKwor
ICAgIGlmIChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyOjpkZWZhdWx0UXVl
dWUoKSwgdGhpcyk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmFkZE1l
ZGlhUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlTWVkaWFSZXNv
dXJjZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2UmIHJlbW90ZU1lZGlhUmVzb3VyY2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IDEzYjc2ZTgwYTQ5OGM5NDVlMWM0NmU5MWZkODQ3
OTgyYjVlZDc0MTEuLmJkY2RhNzFlZDI1MGQxMjkyNDFlZWI4MWZhYmYwNzFhZTlkOGMxNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCkBAIC01MCwxNiArNTEsMTkgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlOwogCiBjbGFzcyBSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcgotICAgIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICA6
IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIoKTsKICAgICB+UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKTsKKyAgICB2b2lk
IHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24o
SVBDOjpDb25uZWN0aW9uKik7CiAKICAgICB2b2lkIGFkZE1lZGlhUmVzb3VyY2UoUmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2UmKTsKICAgICB2b2lkIHJl
bW92ZU1lZGlhUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAvLyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgpAQCAtNzIsNiArNzYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKIAogICAgIEhhc2hN
YXA8UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2UqPiBt
X3JlbW90ZU1lZGlhUmVzb3VyY2VzOworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVh
ZGQ4NDczMGYxMWI3NzNiMDM1MmRiYWFmZThkZGFjZGE4NzYwOTMuLjE4ZGI5NTY1YjQ0ZWYwNjNi
ZTEzZGJjNTIyZDE1NzcwMWE1NDBlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIwMSwxNSArMjAxLDE1
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkmJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIExPRyhOZXR3b3Jr
LCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXpl
ICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygp
LmxhdGluMSgpLmRhdGEoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3Np
bmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEg
dW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZ
KG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSkpKSB7Ci0gICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsK
KyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
IChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggYWM1
NDIyZmMwNjcxMGJkMGUwODdlMGY0NDA5ZWQ5NDAxN2MwY2YxNi4uMWE1NDBmOTc3MWZhMDFjNjBm
YmQ1OWQ5MzEzZmQxYWVjZmY0ZTM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3Vy
Y2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxT
ZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Cg==
</data>
<flag name="commit-queue"
          id="476779"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450386</attachid>
            <date>2022-01-31 00:07:20 -0800</date>
            <delta_ts>2022-01-31 02:29:44 -0800</delta_ts>
            <desc>WIP6</desc>
            <filename>bug-235353-20220131190718.patch</filename>
            <type>text/plain</type>
            <size>94870</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNiNjk0MDRlYjJkYzc1MjVkYzBlMWFi
OTdmYzRlMDFiNDBhZTk4ODkuLjk3NzcwZmVmNDU2Y2QzZWVlMjU3NTNlZjBiOWI3ODU2ZDc5OTM2
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWV0YV0gUGVyZm9ybSBtZWRpYSBuZXR3b3JraW5n
IG9wZXJhdGlvbiBvZmYgdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUzNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWVCYXNlOjph
c3NlcnRJc09uV29ya1F1ZXVlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVl
dWVHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlQmFzZTo6YXNzZXJ0SXNPbldv
cmtRdWV1ZSBjb25zdCk6CisKIDIwMjItMDEtMzAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRGVsZXRlIHJ1bnRpbWUgcHJlZmVyZW5jZSBmb3IgZW5hYmxpbmcg
aW5wdXQgZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU3MWZiNzBiYTY5MTM0N2FiODdiMmIzZTEyMzI3Zjk4
MjQ5MWE0ODcuLjhlYTYzZWU1MGI5OWQ5NjQxOWM3NGM4NmExZTBkMTIyYmIyMmNiNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBbbWV0YV0gUGVyZm9ybSBtZWRpYSBuZXR3b3JraW5nIG9w
ZXJhdGlvbiBvZmYgdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUzNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKwogMjAyMi0wMS0yOSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEZWxldGUgcnVudGltZSBwcmVm
ZXJlbmNlIGZvciBlbmFibGluZyByZXF1ZXN0IGFuaW1hdGlvbiBmcmFtZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApp
bmRleCAzNjhjMDY2ZDhmOTZiNGJjZTc0MzE4MjUyZTNjMDI2NjYxZDhmNjk3Li42NThkZTY5NmYw
MWNjZTU2YjNlM2IxMjg0YzM4NjVhMzIzYzUzNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtNTYsNiAr
NTYsOCBAQCBwdWJsaWM6CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlLmdldCgpOyB9CiAjZW5kaWYKIAorICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFzc2VydElzT25Xb3JrUXVldWUoKSBjb25zdDsKKwogcHJvdGVj
dGVkOgogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgewogICAgICAgICBTZXJpYWwsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKaW5kZXggZjlmNDdmMTFjNzg0NWQyNzVl
MTFjZjcyMGQwYTg1NjI1OWNiMjIxYy4uNTFiNGEzNDc0MTExMTQ0NmYxNGQzZTNmMmM0NDVkMzhi
YmJiZTY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2Eu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcApAQCAtOTIs
NiArOTIsMTMgQEAgdm9pZCBXb3JrUXVldWVCYXNlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogewog
fQogCit2b2lkIFdvcmtRdWV1ZUJhc2U6OmFzc2VydElzT25Xb3JrUXVldWUoKSBjb25zdAorewor
I2lmIEFTU0VSVF9FTkFCTEVECisgICAgZGlzcGF0Y2hfYXNzZXJ0X3F1ZXVlKG1fZGlzcGF0Y2hR
dWV1ZS5nZXQoKSk7CisjZW5kaWYKK30KKwogV29ya1F1ZXVlOjpXb3JrUXVldWUoT1NPYmplY3RQ
dHI8ZGlzcGF0Y2hfcXVldWVfdD4mJiBxdWV1ZSkKICAgICA6IFdvcmtRdWV1ZUJhc2UoV1RGTW92
ZShxdWV1ZSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1
ZUdlbmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNw
cAppbmRleCBkMjU3ZDNhNzIwNGVmYjFjYjNhNWQ4OTU0NjEwZjJiMDI3YThkZTUxLi4xYmVmYzIw
OGVjNDZhY2IwYjVkZWY5MDEwYzY0MzZiMjk0YmMzNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dl
bmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKQEAgLTg1LDQgKzg1LDkgQEAgUmVmPFdvcmtRdWV1
ZT4gV29ya1F1ZXVlOjpjb25zdHJ1Y3RNYWluV29ya1F1ZXVlKCkKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXb3JrUXVldWUoUnVuTG9vcDo6bWFpbigpKSk7CiB9CiAKK3ZvaWQgV29ya1F1ZXVl
QmFzZTo6YXNzZXJ0SXNPbldvcmtRdWV1ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCZjdXJyZW50
KCkgPT0gbV9ydW5Mb29wKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFhMTdhNzBmYTU4YzcyMjhmNjM4OTM1OWRkMGQzMzlk
MGUwNWNkMmUuLjI2OGI4MTA5MTQzMmZiZGU1ODI4OGE4MTBjMDA4NzNmZDYxMjVlMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE4Mywy
MCArMTgzLDIxIEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKCJDcm9zcy1vcmlnaW4gbWVk
aWEgcmVzb3VyY2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcg
cG9saWN5LiIpOwogICAgICAgICBtX2xvYWRlci0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVN
ZXNzYWdlLmdldCgpKTsKICAgICAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFs
c2U7Ci0gICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5hY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQoKnRoaXMsIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIGNvbnNvbGVNZXNzYWdlLmdldCgpKSk7CisgICAg
ICAgIGlmIChhdXRvIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICAgICAgY2xpZW50
LT5hY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoKnRoaXMsIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIGNvbnNvbGVNZXNzYWdlLmdldCgp
KSk7CiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZGlk
UGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IG1fcmVzb3VyY2UtPm9wdGlvbnMoKS5tb2RlID09IEZl
dGNoT3B0aW9uczo6TW9kZTo6Q29yczsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xp
ZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVy
Q2FsbGVyLnJlbGVhc2UoKV0gKGF1dG8gc2hvdWxkQ29udGludWUpIG11dGFibGUgeworICAgIGlm
IChhdXRvIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKSB7CisgICAgICAgIGNsaWVudC0+cmVzcG9u
c2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxl
YXNlKCldIChhdXRvIHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChj
b21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgICAgICAgICAgaWYgKHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVlUG9saWN5Q2hl
Y2s6Ok5vKQogICAgICAgICAgICAgICAgIHN0b3AoKTsKICAgICAgICAgfSk7CisgICAgfQogCiAg
ICAgbV9sb2FkZXItPmFkZFJlc3BvbnNlRm9yVGVzdGluZyhyZXNwb25zZSk7CiB9CkBAIC0yMDYs
OCArMjA3LDggQEAgYm9vbCBNZWRpYVJlc291cmNlOjpzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2UKICAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIHJl
dHVybiBtX2NsaWVudC0+c2hvdWxkQ2FjaGVSZXNwb25zZSgqdGhpcywgcmVzcG9uc2UpOworICAg
IGlmIChhdXRvIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICByZXR1cm4gY2xpZW50
LT5zaG91bGRDYWNoZVJlc3BvbnNlKCp0aGlzLCByZXNwb25zZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTIxNiw4ICsyMTcsOCBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OnJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJgogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJl
ZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGlmIChtX2NsaWVu
dCkKLSAgICAgICAgbV9jbGllbnQtPnJlZGlyZWN0UmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUocmVx
dWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKGF1
dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+cmVkaXJlY3RSZWNl
aXZlZCgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICBlbHNlCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOwogfQpAQCAtMjI3LDggKzIyOCw4IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0
YVNlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNT
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwog
CiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgaWYg
KG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwg
dG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQo
KSkKKyAgICAgICAgY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVz
VG9CZVNlbnQpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQpAQCAtMjM2LDgg
KzIzNyw4IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBiCiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3Vy
Y2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2Ns
aWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOworICAgIGlmIChhdXRvIGNsaWVudCA9
IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgYnVm
ZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKQEAgLTI0
NSwxMSArMjQ2LDExIEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1lCiAgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlh
UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgaWYgKG1fY2xpZW50KSB7CisgICAg
aWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpIHsKICAgICAgICAgaWYgKG1fcmVzb3Vy
Y2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpCi0gICAgICAgICAgICBtX2NsaWVudC0+bG9hZEZh
aWxlZCgqdGhpcywgbV9yZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKKyAgICAgICAgICAgIGNs
aWVudC0+bG9hZEZhaWxlZCgqdGhpcywgbV9yZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywgbWV0
cmljcyk7CisgICAgICAgICAgICBjbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7
CiAgICAgfQogICAgIHN0b3AoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXgg
Yzk1OGY4NDRkYWMxNDM5NGUyNGRlZmVhYmE3NTRmOWQ4YTgxMjk5My4uNzE5Zjc4YmI5YmViMTk4
MjE2ZmIzZDJjNGY0ZDQ2OTQyNGE5ZjA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgK
QEAgLTMxLDEwICszMSwxMiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDEwICs0NSwxMSBAQCBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAot
Y2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8UGxh
dGZvcm1NZWRpYVJlc291cmNlQ2xpZW50PiB7CitjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VD
bGllbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1NZWRpYVJlc291cmNl
Q2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xp
ZW50KCkgPSBkZWZhdWx0OwogCisgICAgLy8gVGhvc2UgbWV0aG9kcyBtdXN0IGJlIGNhbGxlZCBv
biBQbGF0Zm9ybU1lZGlhUmVzb3VyY2U6OnRhcmdldFF1ZXVlKCkKICAgICB2aXJ0dWFsIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNr
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51
ZVBvbGljeUNoZWNrOjpZZXMpOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVx
dWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0K
QEAgLTY4LDkgKzcxLDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmLCBMb2FkT3B0
aW9ucykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYp
ID0gMDsKIAorICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZHMuIFJldHVybiB0aGUg
V29ya1F1ZXVlIG9uIHdoaWNoIHRoZSBQbGFmdG9ybU1lZGlhUmVzb3VyY2UgYW5kIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUNsaWVudCBtdXN0IGJlIGJlIGNhbGxlZCBvbi4KKyAgICB2aXJ0dWFsIFJl
ZjxXVEY6OldvcmtRdWV1ZT4gdGFyZ2V0UXVldWUoKSB7IHJldHVybiBXVEY6OldvcmtRdWV1ZTo6
bWFpbigpOyB9CisgICAgLy8gcmVxdWVzdFJlc291cmNlIHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBt
YWluIHRocmVhZCwgdGhlIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSBvYmplY3QgaXMgdG8gYmUgdXNl
ZCBvbiB0YXJnZXRRdWV1ZSgpLgorICAgIHZpcnR1YWwgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNv
dXJjZT4gcmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmLCBMb2FkT3B0aW9ucykgPSAw
OworCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKCkgPSBkZWZh
dWx0OwogfTsKQEAgLTgzLDExICs5MCwyMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0
b3AoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIHNldENsaWVudChSZWZQdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlQ2xpZW50PiYmIGNsaWVudCkgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xp
ZW50KTsgfQotICAgIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCogY2xpZW50KCkgeyByZXR1
cm4gbV9jbGllbnQuZ2V0KCk7IH0KLQotcHJvdGVjdGVkOgotICAgIFJlZlB0cjxQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQ+IG1fY2xpZW50OworICAgIHZvaWQgc2V0Q2xpZW50KFJlZlB0cjxQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ+JiYgY2xpZW50KQorICAgIHsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsKKyAgICB9CisgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudD4gY2xpZW50
KCkgY29uc3QKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICAg
ICAgcmV0dXJuIG1fY2xpZW50OworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlQ2xpZW50PiBtX2NsaWVudCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9j
ayk7CisgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCBjZGFhMWIwOThjM2E1NGIxYTZjNjFhNDVkZGRi
ZGYyYzY5M2Q2MmFiLi45YzNiNzAzN2U5YWIxZmEzODFlN2I2NzI3M2E4MjI2NWE0ZDFmYzU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT2JzZXJ2
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldElt
YWdlR2VuZXJhdG9yOwogT0JKQ19DTEFTUyBBVkFzc2V0VHJhY2s7CkBAIC00NjcsNiArNDY4LDcg
QEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50ZXJ2YWw+IG1f
Y2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYnNlcnZlcjx2
b2lkKCk+PiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8T2JzZXJ2ZXI8dm9pZCgpPj4gbV93YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hh
bmdlT2JzZXJ2ZXI7CisgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3RhcmdldFF1ZXVlIHsgV1RG
OjpXb3JrUXVldWU6Om1haW4oKSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5k
ZXggYTA4ZGEwZjRmMTBlNGMzZTRhOWE3MWVlOGY1MzI1ZmE2NmUwOTFmZi4uZTBjMTMwYzEyOGUz
YmQ1NjIxYWE0MGY4ODEzYjBkOTM4OTc2M2U0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBA
IC0zOTAsNyArMzkwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWwKICAgICAgICAgW2ZpbGVN
YW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpiYXNlVVJMIGVycm9yOm5pbF07CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBOU0FycmF5ICpwcm9wZXJ0eUtleXMgPSBAW05TVVJMTmFt
ZUtleSwgTlNVUkxDb250ZW50TW9kaWZpY2F0aW9uRGF0ZUtleSwgTlNVUkxJc1JlZ3VsYXJGaWxl
S2V5XTsKICAgICBOU0RpcmVjdG9yeUVudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBbZmlsZU1hbmFn
ZXIgZW51bWVyYXRvckF0VVJMOmJhc2VVUkwgaW5jbHVkaW5nUHJvcGVydGllc0ZvcktleXM6CiAg
ICAgICAgIHByb3BlcnR5S2V5cyBvcHRpb25zOk5TRGlyZWN0b3J5RW51bWVyYXRpb25Ta2lwc1N1
YmRpcmVjdG9yeURlc2NlbmRhbnRzCkBAIC00NDcsOCArNDQ3LDExIEBAIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KCkKIAogICAgIFtbbV9hdkFzc2V0IHJlc291cmNlTG9hZGVyXSBzZXREZWxlZ2F0ZTpuaWwgcXVl
dWU6MF07CiAKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVyTWFwKQotICAg
ICAgICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CisgICAgZm9yIChhdXRvJiBwYWlyIDogbV9y
ZXNvdXJjZUxvYWRlck1hcCkgeworICAgICAgICBtX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbbG9h
ZGVyID0gcGFpci52YWx1ZV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBsb2FkZXItPmludmFs
aWRhdGUoKTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgaWYgKG1fdmlkZW9PdXRwdXQpCiAg
ICAgICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKQEAgLTk2OSw3ICs5NzIsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JV
UkwoY29uc3QgVVJMJiB1cmwsIFJldAogICAgICAgICB9CiAgICAgfQogCi0gICAgQVZBc3NldFJl
c291cmNlTG9hZGVyICpyZXNvdXJjZUxvYWRlciA9IG1fYXZBc3NldC5nZXQoKS5yZXNvdXJjZUxv
YWRlcjsKKyAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gW21fYXZB
c3NldCByZXNvdXJjZUxvYWRlcl07CiAgICAgW3Jlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1f
bG9hZGVyRGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpXTsK
IAogICAgIGlmIChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmlzQVZGb3VuZGF0aW9uTlNVUkxT
ZXNzaW9uRW5hYmxlZCgpCkBAIC05NzcsOCArOTgwLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwg
UmV0CiAgICAgICAgICYmIFtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKFVSTFNlc3Npb25EYXRhRGVsZWdhdGUpXQogICAgICAgICAmJiBbcmVzb3VyY2VMb2FkZXIg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uRGF0YURlbGVnYXRlUXVldWUp
XSkgewogICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtZWRpYVJl
c291cmNlTG9hZGVyID0gcGxheWVyKCktPmNyZWF0ZVJlc291cmNlTG9hZGVyKCk7Ci0gICAgICAg
IGlmIChtZWRpYVJlc291cmNlTG9hZGVyKQorICAgICAgICBpZiAobWVkaWFSZXNvdXJjZUxvYWRl
cikgeworICAgICAgICAgICAgbV90YXJnZXRRdWV1ZSA9IG1lZGlhUmVzb3VyY2VMb2FkZXItPnRh
cmdldFF1ZXVlKCk7CiAgICAgICAgICAgICByZXNvdXJjZUxvYWRlci5VUkxTZXNzaW9uID0gKE5T
VVJMU2Vzc2lvbiAqKWFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uIGFsbG9jXSBpbml0V2l0
aFJlc291cmNlTG9hZGVyOiptZWRpYVJlc291cmNlTG9hZGVyIGRlbGVnYXRlOnJlc291cmNlTG9h
ZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGUgZGVsZWdhdGVRdWV1ZTpyZXNvdXJjZUxvYWRlci5V
UkxTZXNzaW9uRGF0YURlbGVnYXRlUXVldWVdKS5nZXQoKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9v
YmpjT2JzZXJ2ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNoYXB0ZXJNZXRhZGF0YURpZENo
YW5nZTopIG5hbWU6QVZBc3NldENoYXB0ZXJNZXRhZGF0YUdyb3Vwc0RpZENoYW5nZU5vdGlmaWNh
dGlvbiBvYmplY3Q6bV9hdkFzc2V0LmdldCgpXTsKQEAgLTIwNTksMjUgKzIwNjQsMzQgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGlu
Z09mUmVzb3VyY2UoQVZBc3NldFIKICNlbmRpZgogI2VuZGlmCiAKLSAgICBhdXRvIHJlc291cmNl
TG9hZGVyID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUodGhpcywgYXZSZXF1ZXN0
KTsKKyAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpj
cmVhdGUodGhpcywgYXZSZXF1ZXN0LCBtX3RhcmdldFF1ZXVlKTsKICAgICBtX3Jlc291cmNlTG9h
ZGVyTWFwLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCwgcmVzb3VyY2VMb2FkZXIu
Y29weVJlZigpKTsKICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdChBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCog
YXZSZXF1ZXN0KQogewotICAgIFN0cmluZyBzY2hlbWUgPSBbW1thdlJlcXVlc3QgcmVxdWVzdF0g
VVJMXSBzY2hlbWVdOworICAgIFJlZlB0ciByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2Fk
ZXJNYXAuZ2V0KChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKIAotICAgIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyTWFwLmdl
dCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCk7Ci0KLSAgICBpZiAocmVzb3VyY2VMb2Fk
ZXIpCi0gICAgICAgIHJlc291cmNlTG9hZGVyLT5zdG9wTG9hZGluZygpOworICAgIGlmIChyZXNv
dXJjZUxvYWRlcikgeworICAgICAgICBtX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbcmVzb3VyY2VM
b2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICByZXNvdXJjZUxvYWRlci0+c3RvcExvYWRpbmcoKTsKKyAgICAgICAgfSk7CisgICAgfQogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFN0b3BMb2FkaW5n
UmVxdWVzdChBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqYXZSZXF1ZXN0KQogeworICAg
IFJlZlB0ciByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2FkZXJNYXAuZ2V0KChfX2JyaWRn
ZSBDRlR5cGVSZWYpYXZSZXF1ZXN0KTsKICAgICBtX3Jlc291cmNlTG9hZGVyTWFwLnJlbW92ZSgo
X19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCk7CisKKyAgICBpZiAocmVzb3VyY2VMb2FkZXIp
IHsKKyAgICAgICAgbV90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3Jlc291cmNlTG9hZGVyID0gV1RG
TW92ZShyZXNvdXJjZUxvYWRlcildICgpIG11dGFibGUgeworICAgICAgICAgICAgcmVzb3VyY2VM
b2FkZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmlzQXZhaWxhYmxlKCkKQEAgLTI0NTQsNyAr
MjQ2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVzb2x2
ZWRVUkxDaGFuZ2VkKCkKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKIHsKLSAgICBBVkFzc2V0UmVzb3VyY2VM
b2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9hdkFzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyOwor
ICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VMb2FkZXIgPSBbbV9hdkFzc2V0IHJl
c291cmNlTG9hZGVyXTsKICAgICBpZiAoIURlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNBVkZv
dW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkKICAgICAgICAgfHwgIVtyZXNvdXJjZUxvYWRl
ciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb24pXSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjQ2OCw3ICsyNDgyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKIAogc3RkOjpv
cHRpb25hbDxib29sPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3b3VsZFRh
aW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CiB7Ci0gICAgQVZB
c3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJjZUxvYWRlciA9IG1fYXZBc3NldC5nZXQoKS5yZXNv
dXJjZUxvYWRlcjsKKyAgICBBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0g
W21fYXZBc3NldCByZXNvdXJjZUxvYWRlcl07CiAgICAgaWYgKCFEZXByZWNhdGVkR2xvYmFsU2V0
dGluZ3M6OmlzQVZGb3VuZGF0aW9uTlNVUkxTZXNzaW9uRW5hYmxlZCgpCiAgICAgICAgIHx8ICFb
cmVzb3VyY2VMb2FkZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uKV0p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggMGVmZWVhZWY1YjJkNzFiYzZkNjcwNGRkMWI5
NzVhY2JhZTExM2JiYy4uNmNlZDVjNzA5MGRiODY4OGJiNWNmNDE2ZDFjYzJhMjYxYmMzNWMxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
LmgKQEAgLTM1LDIwICszNSwyNSBAQAogCiBPQkpDX0NMQVNTIEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdSZXF1ZXN0OwogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xh
c3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKK2NsYXNzIFBh
cnNlZENvbnRlbnRSYW5nZTsKIGNsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAotY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiB7CitjbGFzcyBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
ICopOworICAgIHN0YXRpYyBSZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nUmVxdWVzdCosIFdURjo6V29ya1F1ZXVlJik7CiAgICAgdmlydHVhbCB+V2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpAQCAtNTYsMjMg
KzYxLDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogcHJpdmF0ZToKLSAg
ICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsKKyAgICBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyog
cGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCosIFdURjo6V29ya1F1ZXVlJik7
CiAKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjsKICAgICBmcmll
bmQgY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI7CiAgICAgZnJpZW5kIGNsYXNzIFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjsKIAotICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgLy8gUmV0dXJuIHRydWUgaWYgc3RvcExvYWRp
bmcoKSBnb3QgY2FsbGVkLCBpbmRpY2F0aW5nIHRoYXQgbm8gZnVydGhlciBwcm9jZXNzaW5nIHNo
b3VsZCBvY2N1ci4KKyAgICBib29sIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgaW50
LCBjb25zdCBQYXJzZWRDb250ZW50UmFuZ2UmLCBzaXplX3QpOworICAgIGJvb2wgbmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKwogICAg
IHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmlu
aXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDKiBtX3BhcmVudDsKKyAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM+IG1fcGFyZW50OyAvLyBPbmx5IGV2ZXIgZGVyZWZlcmVuY2VkIG9uIHRoZSBtYWlu
IHRocmVhZC4KICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1f
YXZSZXF1ZXN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cj4gbV9kYXRhVVJMTWVkaWFMb2FkZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENhY2hlZFJlc291
cmNlTWVkaWFMb2FkZXI+IG1fcmVzb3VyY2VNZWRpYUxvYWRlcjsKLSAgICBXZWFrUHRyPFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gbV9wbGF0Zm9ybU1lZGlhTG9hZGVyOworICAgIFJlZlB0
cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IG1fcGxhdGZvcm1NZWRpYUxvYWRlcjsKICAg
ICBzaXplX3QgbV9yZXNwb25zZU9mZnNldCB7IDAgfTsKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+
IG1fdGFyZ2V0UXVldWU7CisgICAgYm9vbCBtX2ludmFsaWRhdGVkIHsgZmFsc2UgfTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQppbmRleCA0YjU5NGZmZjhkNmY0ZjcxYzc2ZDA1NmViYTEyOGY4NTgwN2RiNGI0Li5kMWJm
Y2Y0MmQzNDJiYWU5ZjI2NzhhZjlmYjEzMmZjYjMyODc0ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0zOSw3ICszOSw5
IEBACiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFz
c2V0UmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8
d3RmL1Njb3BlLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9X
b3JrUXVldWUuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogQGludGVyZmFjZSBB
VkFzc2V0UmVzb3VyY2VMb2FkaW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCAoV2ViS2l0RXh0
ZW5zaW9ucykKQEAgLTExOCw3ICsxMjAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2Fk
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdAogICAg
IEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBD
b21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBtX3BhcmVudC5yZXNwb25zZVJlY2VpdmVk
KHJlc3BvbnNlKTsKKyAgICBtX3BhcmVudC5yZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlLm1pbWVU
eXBlKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLmNvbnRlbnRSYW5nZSgp
LCByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVz
b3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTM3LDExICsxMzksMTEgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBTaGEKICAgICAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKCpkYXRhKTsKIH0KIAotY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyIGZp
bmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4geworY2xhc3MgUGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVu
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdl
YWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBjcmVhdGUoV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyJiwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiwgUmVzb3VyY2VSZXF1ZXN0
JiYpOwotICAgIH5QbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXIoKSB7IHN0b3AoKTsgfQorICAg
IHN0YXRpYyBSZWZQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBjcmVhdGUoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYpOworICAgIH5QbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXIoKSA9IGRlZmF1
bHQ7CiAKICAgICB2b2lkIHN0b3AoKTsKIApAQCAtMTYyLDEyMiArMTY0LDEzNCBAQCBwcml2YXRl
OgogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KIAogICAgIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CisgICAgY29uc3QgV1RGOjpXb3JrUXVldWUm
IG1fdGFyZ2V0UXVldWU7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNv
dXJjZTsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAotV2Vha1B0cjxQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK1JlZlB0cjxQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBh
dXRvIHJlc291cmNlID0gbG9hZGVyLnJlcXVlc3RSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkRpc2FsbG93Q2FjaGluZyk7
CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byog
cmVzb3VyY2VQb2ludGVyID0gcmVzb3VyY2UuZ2V0KCk7CiAgICAgYXV0byBjbGllbnQgPSBhZG9w
dFJlZigqbmV3IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlciB7IHBhcmVudCwgcmVzb3VyY2Uu
cmVsZWFzZU5vbk51bGwoKSB9KTsKLSAgICBXZWFrUHRyIHJlc3VsdCA9IGNsaWVudDsKLQotICAg
IHJlc291cmNlUG9pbnRlci0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXNvdXJjZVBvaW50ZXItPnNldENsaWVudChjbGllbnQuY29weVJlZigp
KTsKKyAgICByZXR1cm4gY2xpZW50OwogfQogCiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6
OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBh
cmVudCwgUmVmPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4mJiByZXNvdXJjZSkKICAgICA6IG1fcGFy
ZW50KHBhcmVudCkKKyAgICAsIG1fdGFyZ2V0UXVldWUocGFyZW50Lm1fdGFyZ2V0UXVldWUpCiAg
ICAgLCBtX3Jlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKQogewogfQogCiB2b2lkIFBsYXRmb3Jt
UmVzb3VyY2VNZWRpYUxvYWRlcjo6c3RvcCgpCiB7CisgICAgbV90YXJnZXRRdWV1ZS5hc3NlcnRJ
c09uV29ya1F1ZXVlKCk7CisKICAgICBpZiAoIW1fcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gcmVzb3VyY2UgPSBXVEZNb3ZlKG1fcmVzb3VyY2UpOwotICAgIHJlc291cmNl
LT5zdG9wKCk7Ci0gICAgcmVzb3VyY2UtPnNldENsaWVudChudWxscHRyKTsKKyAgICBjYWxsT25N
YWluVGhyZWFkKFtyZXNvdXJjZSA9IFdURk1vdmUobV9yZXNvdXJjZSldICgpIG11dGFibGUgewor
ICAgICAgICByZXNvdXJjZS0+c3RvcCgpOworICAgICAgICByZXNvdXJjZS0+c2V0Q2xpZW50KG51
bGxwdHIpOworICAgIH0pOwogfQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBv
bGljeUNoZWNrKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3BhcmVudC5yZXNwb25z
ZVJlY2VpdmVkKHJlc3BvbnNlKTsKKyAgICBtX3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVl
dWUoKTsKKworICAgIG1fcGFyZW50LnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UubWltZVR5cGUo
KSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVzcG9uc2UuY29udGVudFJhbmdlKCksIHJl
c3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCiB2b2lkIFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsK
KyAgICBtX3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIG1fcGFyZW50
LmxvYWRGYWlsZWQoZXJyb3IpOwogfQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6bG9hZEZpbmlzaGVkKCkKIHsKKyAgICBtX3RhcmdldFF1ZXVlLmFzc2VydElzT25Xb3JrUXVl
dWUoKTsKKwogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCiB2b2lkIFBsYXRmb3Jt
UmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIG1fdGFyZ2V0UXVldWUuYXNzZXJ0
SXNPbldvcmtRdWV1ZSgpOworCiAgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9w
YXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAK
LWNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CitjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRp
YUxvYWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGF0
YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYpOwogCiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
bV9wYXJlbnQ7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFy
ZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgIDogbV9wYXJlbnQocGFyZW50KQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0RhdGEoKSk7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFV
UkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZv
cmdpdmluZ0Jhc2U2NCkpIHsKLSAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6
OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwotICAgIH0K
LQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBpZiAoIW1fYnVmZmVyIHx8IG1fcmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgLy8g
ZGF0YSBVUkxzIGNhbiBlbmQgdXAgYmVpbmcgdW5yZWFzb25hYmx5IGJpZyBzbyB3ZSB3YW50IHRv
IGF2b2lkIGhhdmluZyB0byBjYWxsIGlzb2xhdGVkQ29weSgpIGhlcmUgd2hlbiBwYXNzaW5nIHRo
ZSBVUkwgU3RyaW5nIHRvIHRoZSBsb2FkaW5nIHRocmVhZC4KKyAgICAgICAgYXV0byByZXNwb25z
ZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVz
dWx0KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX3BhcmVudC5tX3RhcmdldFF1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcGFyZW50ID0gUmVmIHsgbV9wYXJlbnQgfSwgYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpLCBtaW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCkuaXNvbGF0ZWRDb3B5KCksIHN0YXR1
cyA9ICByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCBjb250ZW50UmFuZ2UgPSByZXNwb25zZS5j
b250ZW50UmFuZ2UoKV0geworCisgICAgICAgICAgICBpZiAobV9wYXJlbnQubV9kYXRhVVJMTWVk
aWFMb2FkZXIuZ2V0KCkgIT0gdGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGlmIChtX3BhcmVudC5yZXNwb25zZVJlY2VpdmVkKG1pbWVUeXBlLCBzdGF0dXMsIGNv
bnRlbnRSYW5nZSwgYnVmZmVyLT5zaXplKCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgaWYgKG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihidWZm
ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9wYXJlbnQubG9h
ZEZpbmlzaGVkKCk7CisgICAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcGFyZW50
Lm1fdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwYXJlbnQgPSBSZWYgeyBtX3BhcmVudCB9
XSB7CisgICAgICAgICAgICBpZiAobV9wYXJlbnQubV9kYXRhVVJMTWVkaWFMb2FkZXIuZ2V0KCkg
IT0gdGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX3BhcmVudC5s
b2FkRmFpbGVkKFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fcGFyZW50LnJlc3BvbnNl
UmVjZWl2ZWQobV9yZXNwb25zZSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVy
KCptX2J1ZmZlcik7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7Ci0gICAgfSk7CisgICAgICAgIH0p
OworICAgIH0KIH0KIAotUmVmPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyog
cGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqYXZSZXF1ZXN0KQorUmVmPFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUo
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3Vy
Y2VMb2FkaW5nUmVxdWVzdCAqYXZSZXF1ZXN0LCBXVEY6OldvcmtRdWV1ZSYgdGFyZ2V0UXVldWUp
CiB7CiAgICAgQVNTRVJUKGF2UmVxdWVzdCk7CiAgICAgQVNTRVJUKHBhcmVudCk7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKHBhcmVudCwgYXZSZXF1
ZXN0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
KHBhcmVudCwgYXZSZXF1ZXN0LCB0YXJnZXRRdWV1ZSkpOwogfQogCi1XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJl
cXVlc3QpCitXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QsIFdURjo6V29ya1F1ZXVlJiB0YXJnZXRRdWV1
ZSkKICAgICA6IG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fYXZSZXF1ZXN0KGF2UmVxdWVzdCkK
KyAgICAsIG1fdGFyZ2V0UXVldWUodGFyZ2V0UXVldWUpCiB7CiB9CiAKIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6fldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcigpCiB7Ci0gICAgc3RvcExvYWRp
bmcoKTsKIH0KIAogdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygp
CiB7CisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLCBiZWZvcmUgYW55IGxvYWRl
cnMgYXJlIGNyZWF0ZWQuCiAgICAgaWYgKG1fZGF0YVVSTE1lZGlhTG9hZGVyIHx8IG1fcmVzb3Vy
Y2VNZWRpYUxvYWRlciB8fCBtX3BsYXRmb3JtTWVkaWFMb2FkZXIgfHwgIW1fcGFyZW50KQogICAg
ICAgICByZXR1cm47CiAKQEAgLTMxMyw0OSArMzI3LDU2IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5n
V2l0aEVycm9yOjBdOwogfQogCisvLyBObyBjb2RlIGFjY2Vzc2luZyBgdGhpc2Agc2hvdWxkIGV2
ZXIgYmUgdXNlZCBhZnRlciBjYWxsaW5nIHN0b3BMb2FkaW5nKCkuCiB2b2lkIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmcoKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2Vy
dElzT25Xb3JrUXVldWUoKTsKKwogICAgIG1fZGF0YVVSTE1lZGlhTG9hZGVyID0gbnVsbHB0cjsK
ICAgICBtX3Jlc291cmNlTWVkaWFMb2FkZXIgPSBudWxscHRyOwogCiAgICAgaWYgKG1fcGxhdGZv
cm1NZWRpYUxvYWRlcikgewogICAgICAgICBtX3BsYXRmb3JtTWVkaWFMb2FkZXItPnN0b3AoKTsK
LSAgICAgICAgbV9wbGF0Zm9ybU1lZGlhTG9hZGVyID0gbnVsbHB0cjsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbbG9hZGVyID0gV1RGTW92ZShtX3BsYXRmb3JtTWVkaWFMb2FkZXIpXSB7IH0p
OworICAgIH0KKyAgICBpZiAobV9hdlJlcXVlc3QpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcGFyZW50ID0gbV9wYXJlbnQsIGludmFsaWRhdGVkID0gbV9pbnZhbGlkYXRlZCwgYXZSZXF1
ZXN0ID0gV1RGTW92ZShtX2F2UmVxdWVzdCldICgpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KCFpbnZhbGlkYXRlZCAmJiBwYXJlbnQpCisgICAgICAgICAgICAgICAgcGFyZW50LT5kaWRTdG9w
TG9hZGluZ1JlcXVlc3QoYXZSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgfSk7CiAgICAgfQotICAg
IGlmIChtX3BhcmVudCAmJiBtX2F2UmVxdWVzdCkKLSAgICAgICAgbV9wYXJlbnQtPmRpZFN0b3BM
b2FkaW5nUmVxdWVzdChtX2F2UmVxdWVzdC5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjppbnZhbGlkYXRlKCkKIHsKLSAgICBpZiAoIW1fcGFyZW50KQotICAgICAg
ICByZXR1cm47CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogCisg
ICAgaWYgKG1faW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2ludmFsaWRhdGVk
ID0gdHJ1ZTsKICAgICBtX3BhcmVudCA9IG51bGxwdHI7CisgICAgc3RvcExvYWRpbmcoKTsKIAot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+c3RvcExvYWRpbmcoKTsKLSAgICB9KTsK
IH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitib29sIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVz
LCBjb25zdCBQYXJzZWRDb250ZW50UmFuZ2UmIGNvbnRlbnRSYW5nZSwgc2l6ZV90IGV4cGVjdGVk
Q29udGVudExlbmd0aCkKIHsKLSAgICBpbnQgc3RhdHVzID0gcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBp
ZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkgewogICAgICAgICBb
bV9hdlJlcXVlc3QgZmluaXNoTG9hZGluZ1dpdGhFcnJvcjowXTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBhdXRvJiBjb250ZW50UmFuZ2UgPSBy
ZXNwb25zZS5jb250ZW50UmFuZ2UoKTsKICAgICBpZiAoY29udGVudFJhbmdlLmlzVmFsaWQoKSkK
ICAgICAgICAgbV9yZXNwb25zZU9mZnNldCA9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGNvbnRl
bnRSYW5nZS5maXJzdEJ5dGVQb3NpdGlvbigpKTsKIAogICAgIGlmIChBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCogY29udGVudEluZm8gPSBbbV9hdlJlcXVl
c3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0pIHsKLSAgICAgICAgU3RyaW5nIHV0aSA9IFVU
SUZyb21NSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICAgICAgU3RyaW5nIHV0aSA9
IFVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSk7CiAKICAgICAgICAgW2NvbnRlbnRJbmZvIHNldENv
bnRlbnRUeXBlOnV0aV07CiAKLSAgICAgICAgW2NvbnRlbnRJbmZvIHNldENvbnRlbnRMZW5ndGg6
Y29udGVudFJhbmdlLmlzVmFsaWQoKSA/IGNvbnRlbnRSYW5nZS5pbnN0YW5jZUxlbmd0aCgpIDog
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCldOworICAgICAgICBbY29udGVudEluZm8g
c2V0Q29udGVudExlbmd0aDpjb250ZW50UmFuZ2UuaXNWYWxpZCgpID8gY29udGVudFJhbmdlLmlu
c3RhbmNlTGVuZ3RoKCkgOiBleHBlY3RlZENvbnRlbnRMZW5ndGhdOwogICAgICAgICBbY29udGVu
dEluZm8gc2V0Qnl0ZVJhbmdlQWNjZXNzU3VwcG9ydGVkOllFU107CiAKICAgICAgICAgLy8gRG8g
bm90IHNldCAiRW50aXJlTGVuZ3RoQXZhaWxhYmxlT25EZW1hbmQiIHRvIFlFUyB3aGVuIHRoZSBs
b2FkZXIgaXMgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIuCkBAIC0zNjgsMTIgKzM4OSwxNiBA
QCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZQogICAgICAgICBpZiAoIVttX2F2UmVxdWVzdCBkYXRh
UmVxdWVzdF0pIHsKICAgICAgICAgICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKICAg
ICAgICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogeworICAg
IG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAgIC8vIDxyZGFyOi8v
cHJvYmxlbS8xMzk4NzQxNz4gU2V0IHRoZSBjb250ZW50VHlwZSBvZiB0aGUgY29udGVudEluZm9y
bWF0aW9uUmVxdWVzdCB0byBhbiBlbXB0eQogICAgIC8vIHN0cmluZyB0byB0cmlnZ2VyIEFWQXNz
ZXQncyBwbGF5YWJsZSB2YWx1ZSB0byBjb21wbGV0ZSBsb2FkaW5nLgogICAgIGlmIChbbV9hdlJl
cXVlc3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0gJiYgIVtbbV9hdlJlcXVlc3QgY29udGVu
dEluZm9ybWF0aW9uUmVxdWVzdF0gY29udGVudFR5cGVdKQpAQCAtMzg1LDE1ICs0MTAsMTkgQEAg
dm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCiAKIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNo
ZWQoKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKKwogICAg
IFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12
b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOworCiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVx
dWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGZv
ciBwb3NzaWJsZSB1bnNpZ25lZCBvdmVyZmxvdy4KICAgICBBU1NFUlQoZGF0YVJlcXVlc3QuY3Vy
cmVudE9mZnNldCA+PSBkYXRhUmVxdWVzdC5yZXF1ZXN0ZWRPZmZzZXQpOwpAQCAtNDI3LDEyICs0
NTYsMTQgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmUKIAogICAgIC8vIFRoZXJlIHdhcyBub3Qg
ZW5vdWdoIGRhdGEgaW4gdGhlIGJ1ZmZlciB0byBzYXRpc2Z5IHRoZSBkYXRhIHJlcXVlc3QuCiAg
ICAgaWYgKHJlbWFpbmluZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoZGF0YVJlcXVlc3QuY3VycmVudE9mZnNldCArIGRhdGFSZXF1ZXN0
LnJlcXVlc3RlZExlbmd0aCA+PSBkYXRhUmVxdWVzdC5yZXF1ZXN0ZWRPZmZzZXQpIHsKICAgICAg
ICAgW21fYXZSZXF1ZXN0IGZpbmlzaExvYWRpbmddOwogICAgICAgICBzdG9wTG9hZGluZygpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGI3YjA3ZmYx
NDU0ZDU2MWEzMDIxMDhhZTMyMjkxZThmODM0MzdiZDkuLmYzODUxN2JkMzEzMWU4MTc1MzQwMTQ0
MmFjNDE4MTFiMmI5YWUzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCkBAIC0xMTgxLDcgKzExODEsOCBAQCBib29sIHdlYktpdFNyY1dvdWxkVGFpbnRP
cmlnaW4oV2ViS2l0V2ViU3JjKiBzcmMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7
CiAgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9Owog
Ci0gICAgYXV0byogY2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgPSByZWludGVycHJldF9j
YXN0PENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Kj4obWVtYmVycy0+cmVzb3VyY2UtPmNs
aWVudCgpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1lbWJlcnMtPnJlc291cmNlLT5jbGllbnQoKTsK
KyAgICBhdXRvKiBjYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCA9IHN0YXRpY19jYXN0PENh
Y2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Kj4oY2xpZW50LmdldCgpKTsKICAgICBmb3IgKGF1
dG8mIHJlc3BvbnNlT3JpZ2luIDogY2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQtPnNlY3Vy
aXR5T3JpZ2lucygpKSB7CiAgICAgICAgIGlmICghb3JpZ2luLmlzU2FtZU9yaWdpbkRvbWFpbigq
cmVzcG9uc2VPcmlnaW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5k
ZXggMjYyZTUzMTgwZDZkZDdjNGQxMzNkZGMxZGFmNTY1MmJkNmYzMWM3Ni4uOWRiMGQ5NzQwNTIw
ZGRhMWYxMDY3OTczMTkwNzBhZmM0ZjhiNjI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMjQ3LDExICsy
NDcsMTEgQEAgcHJpdmF0ZToKIAogcHJvdGVjdGVkOgogICAgIFVSTCBtX3VybDsKLSAgICBBdG9t
U3RyaW5nIG1fbWltZVR5cGU7CisgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgbG9uZyBsb25n
IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoIHsgMCB9OwotICAgIEF0b21TdHJpbmcgbV90ZXh0RW5j
b2RpbmdOYW1lOwotICAgIEF0b21TdHJpbmcgbV9odHRwU3RhdHVzVGV4dDsKLSAgICBBdG9tU3Ry
aW5nIG1faHR0cFZlcnNpb247CisgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKKyAgICBT
dHJpbmcgbV9odHRwU3RhdHVzVGV4dDsKKyAgICBTdHJpbmcgbV9odHRwVmVyc2lvbjsKICAgICBI
VFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICBCb3g8TmV0d29ya0xvYWRNZXRy
aWNzPiBtX25ldHdvcmtMb2FkTWV0cmljczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCmluZGV4
IDlmY2RjMTg3NTMxYjdjZjRlMjY3ZGRhNTIwMGM1NGJlMDU0ZjUwYzYuLmVlNWQ5ZmViMGM0OGEy
YWZlMWQwNGE4YTI5YzllMzJiNDY2NmNiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJl
c3BvbnNlKCkgY29uc3QKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKICAg
ICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX3VybC5jcmVhdGVDRlVSTCgpOwogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBsZXRlIENGVVJMUmVzcG9u
c2UsIHdoaWNoIGRvZXMgbm90IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2RlLgotICAgICAgICBtX2Nm
UmVzcG9uc2UgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtX21p
bWVUeXBlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50
TGVuZ3RoLCBtX3RleHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOworICAgICAgICBtX2NmUmVzcG9uc2UgPSBh
ZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtX21pbWVUeXBlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGlu
Z05hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkp
OwogICAgIH0KIAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CkBAIC03NCw3ICs3NCw3
IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwgaW5p
dExldmVsKQogICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vODc1NzA4
OD4sIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhhdCBpcyBmaXhlZC4KICAgICAgICAgdW5zaWduZWQg
dGV4dEVuY29kaW5nTmFtZUxlbmd0aCA9IG1fdGV4dEVuY29kaW5nTmFtZS5sZW5ndGgoKTsKICAg
ICAgICAgaWYgKHRleHRFbmNvZGluZ05hbWVMZW5ndGggPj0gMiAmJiBtX3RleHRFbmNvZGluZ05h
bWVbMFVdID09ICciJyAmJiBtX3RleHRFbmNvZGluZ05hbWVbdGV4dEVuY29kaW5nTmFtZUxlbmd0
aCAtIDFdID09ICciJykKLSAgICAgICAgICAgIG1fdGV4dEVuY29kaW5nTmFtZSA9IG1fdGV4dEVu
Y29kaW5nTmFtZS5zdHJpbmcoKS5zdWJzdHJpbmcoMSwgdGV4dEVuY29kaW5nTmFtZUxlbmd0aCAt
IDIpOworICAgICAgICAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gbV90ZXh0RW5jb2RpbmdOYW1l
LnN1YnN0cmluZygxLCB0ZXh0RW5jb2RpbmdOYW1lTGVuZ3RoIC0gMik7CiAKICAgICAgICAgQ0ZI
VFRQTWVzc2FnZVJlZiBodHRwUmVzcG9uc2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNl
KG1fY2ZSZXNwb25zZS5nZXQoKSk7CiAgICAgICAgIGlmIChodHRwUmVzcG9uc2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLmgKaW5kZXggMDBjMjAwMDI1MTU5OTFhYzBkZDRlZDMwOTEzYjIy
ZGRjNjhhY2U2Zi4uNTg0NWFlMTVkMGI5MTcwN2I3MTIxMDk2NzE3ODllNjNlYjA1YTY2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgpAQCAtMzIsMTUgKzMzLDE4IEBACiBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIE9CSkNf
Q0xBU1MgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrOwogCituYW1lc3BhY2UgV1RGIHsKK2Ns
YXNzIFdvcmtRdWV1ZTsKK30KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBhcnNlZFJl
cXVlc3RSYW5nZTsKIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiAKLWNsYXNzIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3IgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UmFuZ2VSZXNwb25zZUdlbmVyYXRvciwgV1RGOjpEZXN0cnVjdGlvblRo
cmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
PiB7CitjbGFzcyBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmFu
Z2VSZXNwb25zZUdlbmVyYXRvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yKTsgfQorICAgIHN0YXRpYyBSZWY8UmFuZ2VSZXNwb25zZUdlbmVyYXRvcj4g
Y3JlYXRlKFdURjo6V29ya1F1ZXVlJiB0YXJnZXRRdWV1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yKHRhcmdldFF1ZXVlKSk7IH0KICAgICB+UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcigpOwogCiAgICAgYm9vbCB3aWxsU3ludGhlc2l6ZVJhbmdlUmVzcG9uc2Vz
KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC00OCw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopOwogCiBwcml2YXRl
OgotICAgIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoKTsKKyAgICBSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yKFdURjo6V29ya1F1ZXVlJik7CiAKICAgICBzdHJ1Y3QgRGF0YTsKICAgICBjbGFzcyBNZWRp
YVJlc291cmNlQ2xpZW50OwpAQCAtNTcsNiArNjEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29uc3Qg
RGF0YSYpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxEYXRhPj4gbV9t
YXA7CisgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3RhcmdldFF1ZXVlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDE5ODE0
YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQuLjAzMTNkNDVlZTU2ODEwMWQ0YzNi
MjdkODZmMThhMjA3NzdhODI3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAg
LTQwLDggKzQwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
KyAgICAvLyBUaGUgUmFuZ2VSZXNwb25zZUdlbmVyYXRvciBpcyB1c2VkIHdpdGggYSBXb3JrUXVl
dWUgd2hpY2ggY2FuIGRvIHRocmVhZCBob3Bpbmcgb3ZlciB0aW1lLgorICAgIC8vIFRoZSBSZXNv
dXJjZVJlc3BvbnNlIGNvbnRhaW5zIFdURjo6U3RyaW5ncyB3aGljaCBtdXN0IGZpcnN0IGJlIGNv
cGllZCB2aWEgaXNvbGF0ZWRDb3B5KCkuCiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBv
cmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZTo6ZnJvbUNyb3NzVGhyZWFkRGF0YShyZXNwb25zZS5jcm9zc1RocmVhZERh
dGEoKSkpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBU
YXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNjIsMTkgKzY0
LDE1IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBSZWZQdHI8
UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKIH07CiAKLVJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoKQorUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcihXVEY6OldvcmtRdWV1ZSYgdGFyZ2V0UXVldWUpCisgICAg
OiBtX3RhcmdldFF1ZXVlKHRhcmdldFF1ZXVlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiB9CiAKLVJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6On5SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
KCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotfQorUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6flJhbmdlUmVzcG9uc2VHZW5lcmF0b3IoKSA9IGRlZmF1bHQ7CiAKIHN0YXRpYyBSZXNv
dXJjZVJlc3BvbnNlIHN5bnRoZXNpemVkUmVzcG9uc2VGb3JSYW5nZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHBhcnNl
ZFJlcXVlc3RSYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHRvdGFsQ29udGVudExlbmd0aCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gYmVnaW4gPSBwYXJzZWRS
ZXF1ZXN0UmFuZ2UuYmVnaW47CiAgICAgYXV0byBlbmQgPSBwYXJzZWRSZXF1ZXN0UmFuZ2UuZW5k
OwogCkBAIC05NSw3ICs5Myw3IEBAIHN0YXRpYyBSZXNvdXJjZVJlc3BvbnNlIHN5bnRoZXNpemVk
UmVzcG9uc2VGb3JSYW5nZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnCiAKIHZvaWQgUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2sgKnRhc2spCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3RhcmdldFF1
ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgYXV0byogZGF0YSA9IG1fbWFwLmdldCh0
YXNrLm9yaWdpbmFsUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDggKzEwMiw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiAK
IHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0lu
UmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBh
cnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENv
bnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLQorICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsKICAgICBh
dXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUg
PCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTE1LDggKzExMiw4IEBAIHZvaWQg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VS
ZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVm
ZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJh
dG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBi
dWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5l
cmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGFyZ2V0UXVldWUgPSBtX3RhcmdldFF1ZXVlXSB7
CisgICAgICAgIHRhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgICAgIGlm
IChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgaWYgKCF0YXNrRGF0YSkKQEAgLTEzNiwxNyArMTMzLDE1IEBA
IHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0lu
UmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRl
eCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVs
bHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwotICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbZ2VuZXJhdG9yLCB0YXNrXSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdlbmVy
YXRvcikKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZW1vdmVUYXNrKHRhc2suZ2V0
KCkpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yKQorICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+cmVtb3ZlVGFzayh0YXNrLmdldCgpKTsKICAgICAgICAgfQog
ICAgIH07CiAKICAgICBzd2l0Y2ggKHRhc2tEYXRhLT5yZXNwb25zZVN0YXRlKSB7CiAgICAgY2Fz
ZSBEYXRhOjpUYXNrRGF0YTo6UmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQ6IHsKICAg
ICAgICAgYXV0byByZXNwb25zZSA9IHN5bnRoZXNpemVkUmVzcG9uc2VGb3JSYW5nZShkYXRhLm9y
aWdpbmFsUmVzcG9uc2UsIHJhbmdlLCBleHBlY3RlZENvbnRlbnRMZW5ndGgpOwotICAgICAgICBb
dGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkUmVzcG9uc2U6cmVzcG9uc2UgY29tcGxldGlv
bkhhbmRsZXI6W2dpdmVCeXRlc1RvVGFzayA9IFdURk1vdmUoZ2l2ZUJ5dGVzVG9UYXNrKSwgdGFz
a0RhdGEgPSBXZWFrUHRyIHsgdGFza0RhdGEgfSwgdGFzayA9IHJldGFpblB0cih0YXNrKV0gKFdl
YkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgc2hvdWxkQ29udGludWUpIHsKKyAgICAg
ICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZFJlc3BvbnNlOnJlc3BvbnNlIGNvbXBs
ZXRpb25IYW5kbGVyOltnaXZlQnl0ZXNUb1Rhc2sgPSBXVEZNb3ZlKGdpdmVCeXRlc1RvVGFzayks
IHRhc2tEYXRhID0gV2Vha1B0ciB7IHRhc2tEYXRhIH0sIHRhc2sgPSByZXRhaW5QdHIodGFzayld
IChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIHNob3VsZENvbnRpbnVlKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmICh0YXNrRGF0YSkKICAgICAgICAgICAgICAgICB0YXNrRGF0
YS0+cmVzcG9uc2VTdGF0ZSA9IERhdGE6OlRhc2tEYXRhOjpSZXNwb25zZVN0YXRlOjpTZXNzaW9u
Q2FsbGVkQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29udGludWUg
PT0gU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKQpAQCAtMTY3LDcgKzE2Miw2IEBAIHZv
aWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFu
Z2VSZWNlaXZlZChXZWJDb3JlTlNVCiAKIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXRhJiBk
YXRhKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6WWVzKQogICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCkBAIC0xODAsNyAr
MTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4
cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIAogdm9pZCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKERhdGEmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3Nl
cnRJc09uV29ya1F1ZXVlKCk7CiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBl
Y3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShkYXRhKTsKIAogICAgIGZvciAoYXV0byYgcGFpciA6
IGRhdGEudGFza0RhdGEpCkBAIC0xODksNyArMTgzLDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKERhdGEmIGRhdGEp
CiAKIGJvb2wgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6d2lsbEhhbmRsZVJlcXVlc3QoV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09u
V29ya1F1ZXVlKCk7CiAgICAgYXV0byogZGF0YSA9IG1fbWFwLmdldChyZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZyk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
MzQsMTMgKzIyOCwxMSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbAog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBmaW5hbAogICAgIHsKLSAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQo
bV91cmxTdHJpbmcpOwpAQCAtMjUyLDcgKzI0NCw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxv
YWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIGZpbmFsCiAgICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAg
ICBpZiAoIW1fZ2VuZXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGRh
dGEgPSBtX2dlbmVyYXRvci0+bV9tYXAudGFrZShtX3VybFN0cmluZyk7CkBAIC0yNjQsNyArMjU1
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsCiAgICAgewotICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBSZWZQdHIgZ2VuZXJhdG9yIHsgbV9nZW5l
cmF0b3IuZ2V0KCkgfTsKICAgICAgICAgaWYgKCFnZW5lcmF0b3IpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0yODIsNyArMjcyLDcgQEAgcHJpdmF0ZToKIAogYm9vbCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjp3aWxsU3ludGhlc2l6ZVJhbmdlUmVzcG9uc2VzKFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFzayAqdGFzaywgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgTlNVUkxSZXF1
ZXN0ICpvcmlnaW5hbFJlcXVlc3QgPSB0YXNrLm9yaWdpbmFsUmVxdWVzdDsKICAgICBpZiAoIW9y
aWdpbmFsUmVxdWVzdC5VUkwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLmgKaW5kZXggZWE0YTliZjI5NzgyOWViZDAyOTE0NzZjYmY4YTdlNTQ5NDcyMTI2ZC4uNGI2
YTcwMWVlOWQwNDkwYzhmNjdiZDE3OGRkOWVkMGM3ZWY3MGRjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgIlJhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
aCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
U2Vzc2lvbi5oPgorI2ltcG9ydCA8d3RmL0F0b21pY3MuaD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9Mb2Nr
Lmg+CkBAIC01MCwxMiArNTEsMTQgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwotY2xhc3MgU2hh
cmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGll
bnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgOiBib29sOwogfQogCitu
YW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30KKwogZW51bSBjbGFzcyBXZWJDb3Jl
TlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0cyA6IHVpbnQ4X3QgewogICAgIFVua25v
d24sCiAgICAgUGFzcywKQEAgLTY0LDIwICs2NywyMiBAQCBlbnVtIGNsYXNzIFdlYkNvcmVOU1VS
TFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzIDogdWludDhfdCB7CiAKIE5TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCiAKKy8vIENyZWF0ZWQgb24gdGhlIG1haW4gdGhyZWFkOyB1c2VkIG9uIHRh
cmdldFF1ZXVlLgogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9u
IDogTlNPYmplY3QgewogQHByaXZhdGUKICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyPiBfbG9hZGVyOworICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gX3Rh
cmdldFF1ZXVlOwogICAgIFdlYWtPYmpDUHRyPGlkPE5TVVJMU2Vzc2lvbkRlbGVnYXRlPj4gX2Rl
bGVnYXRlOwogICAgIFJldGFpblB0cjxOU09wZXJhdGlvblF1ZXVlPiBfcXVldWU7CiAgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBfc2Vzc2lvbkRlc2NyaXB0aW9uOwotICAgIEhhc2hTZXQ8UmV0YWlu
UHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4+IF9kYXRhVGFza3M7Ci0gICAgSGFzaFNl
dDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBfb3JpZ2luczsKICAgICBMb2NrIF9k
YXRhVGFza3NMb2NrOwotICAgIEJPT0wgX2ludmFsaWRhdGVkOworICAgIEhhc2hTZXQ8UmV0YWlu
UHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4+IF9kYXRhVGFza3M7IC8vIFByb3RlY3Rl
ZCBieSBfZGF0YVRhc2tzTG9jaworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPj4gX29yaWdpbnM7IC8vIEFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICBX
VEY6OkF0b21pYzxCT09MPiBfaW52YWxpZGF0ZWQ7CiAgICAgTlNVSW50ZWdlciBfbmV4dFRhc2tJ
ZGVudGlmaWVyOwotICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IF9pbnRlcm5hbFF1
ZXVlOworICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gX2ludGVybmFsUXVldWU7CiAgICAgV2Vi
Q29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHMgX2NvcnNSZXN1bHRzOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yPiBfcmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcj4gX3Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3I7IC8vIE9ubHkgY3JlYXRlZC9hY2Nlc3NlZCBvbiBfdGFyZ2V0
UXVldWUKIH0KIC0gKGlkKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlciYpbG9hZGVyIGRlbGVnYXRlOihpZDxOU1VSTFNlc3Npb25UYXNr
RGVsZWdhdGU+KWRlbGVnYXRlIGRlbGVnYXRlUXVldWU6KE5TT3BlcmF0aW9uUXVldWUqKXF1ZXVl
OwogQHByb3BlcnR5IChyZWFkb25seSwgcmV0YWluKSBOU09wZXJhdGlvblF1ZXVlICpkZWxlZ2F0
ZVF1ZXVlOwpAQCAtODUsNiArOTAsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNv
cmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBO
U1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uOwogQHByb3BlcnR5IChjb3B5
KSBOU1N0cmluZyAqc2Vzc2lvbkRlc2NyaXB0aW9uOwogQHByb3BlcnR5IChyZWFkb25seSkgQk9P
TCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrczsKK0Bwcm9wZXJ0eSAoYXNzaWduLCBhdG9taWMpIFdl
YkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzIGNvcnNSZXN1bHRzOwogLSAo
dm9pZClmaW5pc2hUYXNrc0FuZEludmFsaWRhdGU7CiAtICh2b2lkKWludmFsaWRhdGVBbmRDYW5j
ZWw7CiAtIChCT09MKXdvdWxkVGFpbnRPcmlnaW46KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luJilvcmlnaW47CkBAIC0xMjAsMjAgKzEyNiwyMiBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJm
YWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiAtICh2b2lkKXNlbmRIMlBpbmc6
KE5TVVJMICopdXJsIHBvbmdIYW5kbGVyOih2b2lkICheKShOU0Vycm9yICogX051bGxhYmxlIGVy
cm9yLCBOU1RpbWVJbnRlcnZhbCBpbnRlcnZhbCkpcG9uZ0hhbmRsZXI7CiBAZW5kCiAKKy8vIENy
ZWF0ZWQgb24gY29tLmFwcGxlLmF2Zm91bmRhdGlvbi5jdXN0b211cmwubnN1cmxzZXNzaW9uCiBA
aW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayA6IE5TT2JqZWN0IHsKLSAgICBX
ZWFrT2JqQ1B0cjxXZWJDb3JlTlNVUkxTZXNzaW9uPiBfc2Vzc2lvbjsKKyAgICBXZWFrT2JqQ1B0
cjxXZWJDb3JlTlNVUkxTZXNzaW9uPiBfc2Vzc2lvbjsgLy8gQWNjZXNzc2VkIGZyb20gb3BlcmF0
aW9uIHF1ZXVlLCBtYWluIGFuZCBsb2FkZXIgdGhyZWFkLiBNdXN0IGJlIGFjY2Vzc2VkIHRocm91
Z2ggT2JqLUMgcHJvcGVydHkuCisgICAgUmVmUHRyPFdURjo6V29ya1F1ZXVlPiBfdGFyZ2V0UXVl
dWU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gX3Jlc291cmNl
OwotICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBfcmVzcG9uc2U7CisgICAgUmV0YWluUHRy
PE5TVVJMUmVzcG9uc2U+IF9yZXNwb25zZTsgLy8gU2V0IG9uIG9wZXJhdGlvbiBxdWV1ZS4KICAg
ICBOU1VJbnRlZ2VyIF90YXNrSWRlbnRpZmllcjsKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0
PiBfb3JpZ2luYWxSZXF1ZXN0OwotICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IF9jdXJyZW50
UmVxdWVzdDsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBfb3JpZ2luYWxSZXF1ZXN0OyAv
LyBTZXQgb24gY29uc3RydWN0aW9uLCBuZXZlciBtb2RpZmllZC4KKyAgICBSZXRhaW5QdHI8TlNV
UkxSZXF1ZXN0PiBfY3VycmVudFJlcXVlc3Q7IC8vIFNldCBvbiBjb25zdHJ1Y3Rpb24sIG5ldmVy
IG1vZGlmaWVkLgogICAgIGludDY0X3QgX2NvdW50T2ZCeXRlc1JlY2VpdmVkOwogICAgIGludDY0
X3QgX2NvdW50T2ZCeXRlc1NlbnQ7CiAgICAgaW50NjRfdCBfY291bnRPZkJ5dGVzRXhwZWN0ZWRU
b1NlbmQ7CiAgICAgaW50NjRfdCBfY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmU7CiAgICAg
TlNVUkxTZXNzaW9uVGFza1N0YXRlIF9zdGF0ZTsKLSAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX2Vy
cm9yOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3Rhc2tEZXNjcmlwdGlvbjsKKyAgICBSZXRh
aW5QdHI8TlNFcnJvcj4gX2Vycm9yOyAvLyBVbnVzZWQsIGFsd2F5cyBuaWwuCisgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBfdGFza0Rlc2NyaXB0aW9uOyAvLyBPbmx5IHNldCAvIHJlYWQgb24gdGhl
IHVzZXIncyB0aHJlYWQuCiAgICAgZmxvYXQgX3ByaW9yaXR5OwogfQogCkBAIC0xNDUsNyArMTUz
LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNP
YmplY3QgewogQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVzU2VudDsKIEBwcm9wZXJ0eSBp
bnQ2NF90IGNvdW50T2ZCeXRlc0V4cGVjdGVkVG9TZW5kOwogQHByb3BlcnR5IGludDY0X3QgY291
bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmU7Ci1AcHJvcGVydHkgTlNVUkxTZXNzaW9uVGFza1N0
YXRlIHN0YXRlOworQHByb3BlcnR5IChhc3NpZ24sIGF0b21pYykgTlNVUkxTZXNzaW9uVGFza1N0
YXRlIHN0YXRlOwogQHByb3BlcnR5IChudWxsYWJsZSwgcmVhZG9ubHksIGNvcHkpIE5TRXJyb3Ig
KmVycm9yOwogQHByb3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKnRhc2tEZXNjcmlw
dGlvbjsKIEBwcm9wZXJ0eSBmbG9hdCBwcmlvcml0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpp
bmRleCAzYzhiZTA4YzI5MzRlNTRkYTNiNzQ5Y2E2ZGEzNGVkYTk2ZGM5YjhiLi5jN2Q0ZmM1N2Mw
ZGVkNjNkNTI5ZmU2MTRhZDQ3YTU0NWY0ZmRlMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CkBAIC0zNyw5ICszNywxMSBAQAogI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0
IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV1RGOwogCiAjcHJhZ21h
IG1hcmsgLSBQcml2YXRlIGRlY2xhcmF0aW9ucwogCkBAIC01Niw3ICs1OCw3IEBAIHN0YXRpYyBO
U0RhdGUgKiBfX251bGxhYmxlIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoTW9ub3RvbmljVGltZSB0
aW1lKQogfQogCiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25N
ZXRyaWNzIDogTlNPYmplY3QKLS0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzOworLSAoaW5zdGFuY2V0eXBlKV9pbml0
V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3Mgb25UYXJn
ZXQ6KFdURjo6V29ya1F1ZXVlKil3b3JrUXVldWU7CiBAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5
LCByZWFkb25seSkgTlNEYXRlICpmZXRjaFN0YXJ0RGF0ZTsKIEBwcm9wZXJ0eSAobnVsbGFibGUs
IGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKmRvbWFpbkxvb2t1cFN0YXJ0RGF0ZTsKIEBwcm9wZXJ0
eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKmRvbWFpbkxvb2t1cEVuZERhdGU7
CkBAIC03OSwyMSArODEsMjMgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZU5TVVJM
U2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgewogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyBfbWV0cmljczsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IF90YXJnZXRRdWV1
ZTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYmKW1ldHJpY3MKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNz
OihXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJiltZXRyaWNzIG9uVGFyZ2V0OihXVEY6Oldv
cmtRdWV1ZSopcXVldWUKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHF1ZXVl
LT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfbWV0cmljcyA9IG1ldHJpY3M7CisgICAgX21l
dHJpY3MgPSBXVEZNb3ZlKG1ldHJpY3MpOworICAgIF90YXJnZXRRdWV1ZSA9IHF1ZXVlOwogICAg
IHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoV2ViQ29yZU9i
akNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tU
cmFuc2FjdGlvbk1ldHJpY3MuY2xhc3MsIHNlbGYpKQotICAgICAgICByZXR1cm47CisgICAgX3Rh
cmdldFF1ZXVlLT5kaXNwYXRjaChbbWV0cmljcyA9IFdURk1vdmUoX21ldHJpY3MpXSB7IH0pOwog
CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtMjE3LDI4ICsyMjEsMjkgQEAgLSAoQk9PTClt
dWx0aXBhdGgKIEBlbmQKIAogQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01ldHJp
Y3MgOiBOU09iamVjdAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3M7CistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
TWV0cmljczooV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpbWV0cmljcyBvblRhcmdldDoo
bm9ubnVsbCBXVEY6OldvcmtRdWV1ZSAqKXRhcmdldFF1ZXVlOwogQHByb3BlcnR5IChjb3B5LCBy
ZWFkb25seSkgTlNBcnJheTxOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICo+ICp0
cmFuc2FjdGlvbk1ldHJpY3M7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxT
ZXNzaW9uVGFza01ldHJpY3MgewogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uVGFz
a1RyYW5zYWN0aW9uTWV0cmljcz4gX3RyYW5zYWN0aW9uTWV0cmljczsKKyAgICBSZWZQdHI8V1RG
OjpXb3JrUXVldWU+IF90YXJnZXRRdWV1ZTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0
aE1ldHJpY3M6KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKW1ldHJpY3MKKy0gKGluc3Rh
bmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJilt
ZXRyaWNzIG9uVGFyZ2V0Oihub25udWxsIFdURjo6V29ya1F1ZXVlICopdGFyZ2V0UXVldWUKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHRhcmdldFF1ZXVlLT5hc3NlcnRJc09u
V29ya1F1ZXVlKCk7CiAKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICBfdHJhbnNhY3Rpb25NZXRyaWNzID0gYWRvcHROUyhbW1dlYkNvcmVO
U1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNz
OldURk1vdmUobWV0cmljcyldKTsKKyAgICBfdGFyZ2V0UXVldWUgPSB0YXJnZXRRdWV1ZTsKKyAg
ICBfdHJhbnNhY3Rpb25NZXRyaWNzID0gYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNr
VHJhbnNhY3Rpb25NZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNzOldURk1vdmUobWV0cmlj
cykgb25UYXJnZXQ6dGFyZ2V0UXVldWVdKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9p
ZClkZWFsbG9jCiB7Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWlu
VGhyZWFkKFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcy5jbGFzcywgc2VsZikpCi0gICAg
ICAgIHJldHVybjsKKyAgICBfdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFttZXRyaWNzID0gV1RGTW92
ZShfdHJhbnNhY3Rpb25NZXRyaWNzKV0geyB9KTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0K
QEAgLTI0Niw2ICsyNTEsOCBAQCAtICh2b2lkKWRlYWxsb2MKIEBkeW5hbWljIHRyYW5zYWN0aW9u
TWV0cmljczsKIC0gKE5TQXJyYXk8TlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyAq
PiAqKXRyYW5zYWN0aW9uTWV0cmljcwogeworICAgIC8vIFRPRE86IFRoaXMgaXMgbGlrZWx5IG5v
dCB0aHJlYWQtc2FmZS4gSG93IHRvIGhhbmRsZSB0aGlzIG9iamVjdD8KKyAgICAvLyBBY2Nlc3Nl
ZCBmcm9tIGRlbGVnYXRlIHRocmVhZC4KICAgICByZXR1cm4gQFsgKE5TVVJMU2Vzc2lvblRhc2tU
cmFuc2FjdGlvbk1ldHJpY3MgKilzZWxmLT5fdHJhbnNhY3Rpb25NZXRyaWNzLmdldCgpIF07CiB9
CiAKQEAgLTI2Miw3ICsyNjksNyBAQCAtIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
JilyYW5nZVJlc3BvbnNlR2VuZXJhdG9yOwogQGVuZAogCiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFzayAoKQotLSAoaWQpaW5pdFdpdGhTZXNzaW9uOihXZWJDb3JlTlNVUkxT
ZXNzaW9uICopc2Vzc2lvbiBpZGVudGlmaWVyOihOU1VJbnRlZ2VyKWlkZW50aWZpZXIgcmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKKy0gKGlkKWluaXRXaXRoU2Vzc2lvbjooV2ViQ29y
ZU5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlmaWVy
IHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdGFyZ2V0UXVldWU6KFdURjo6V29ya1F1
ZXVlKil0YXJnZXRRdWV1ZTsKIC0gKHZvaWQpX3Jlc3RhcnQ7CiAtICh2b2lkKV9jYW5jZWw7CiBA
cHJvcGVydHkgKGFzc2lnbikgV2ViQ29yZU5TVVJMU2Vzc2lvbiAqIF9OdWxsYWJsZSBzZXNzaW9u
OwpAQCAtMjc0LDIwICsyODEsMjYgQEAgTlNfQVNTVU1FX05PTk5VTExfRU5ECiAjcHJhZ21hIG1h
cmsgLSBXZWJDb3JlTlNVUkxTZXNzaW9uCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxT
ZXNzaW9uCitAc3ludGhlc2l6ZSBjb3JzUmVzdWx0cyA9IF9jb3JzUmVzdWx0czsKKwogLSAoaWQp
aW5pdFdpdGhSZXNvdXJjZUxvYWRlcjooUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJilsb2Fk
ZXIgZGVsZWdhdGU6KGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4paW5EZWxlZ2F0ZSBkZWxl
Z2F0ZVF1ZXVlOihOU09wZXJhdGlvblF1ZXVlKilpblF1ZXVlCiB7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAg
ICAgICAgcmV0dXJuIG5pbDsKIAogICAgIEFTU0VSVChfY29yc1Jlc3VsdHMgPT0gV2ViQ29yZU5T
VVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlVua25vd24pOwotICAgIEFTU0VSVCgh
X2ludmFsaWRhdGVkKTsKKyAgICBBU1NFUlQoIV9pbnZhbGlkYXRlZC5sb2FkKCkpOwogCiAgICAg
X2xvYWRlciA9ICZsb2FkZXI7CisgICAgX3RhcmdldFF1ZXVlID0gX2xvYWRlci0+dGFyZ2V0UXVl
dWUoKTsKICAgICBzZWxmLmRlbGVnYXRlID0gaW5EZWxlZ2F0ZTsKICAgICBfcXVldWUgPSBpblF1
ZXVlID8gaW5RdWV1ZSA6IFtOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV07Ci0gICAgX2ludGVy
bmFsUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZU5T
VVJMU2Vzc2lvbiBfaW50ZXJuYWxRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpOwotICAg
IF9yYW5nZVJlc3BvbnNlR2VuZXJhdG9yID0gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Y3JlYXRl
KCk7CisgICAgX2ludGVybmFsUXVldWUgPSBXVEY6OldvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJDb3Jl
TlNVUkxTZXNzaW9uIF9pbnRlcm5hbFF1ZXVlIik7CisgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRj
aChbc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAgICAgICBzdHJvbmdTZWxmLT5f
cmFuZ2VSZXNwb25zZUdlbmVyYXRvciA9IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmNyZWF0ZSgq
c3Ryb25nU2VsZi0+X3RhcmdldFF1ZXVlKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBzZWxmOwog
fQpAQCAtMjk2LDE3ICszMDksMTkgQEAgLSAodm9pZClkZWFsbG9jCiB7CiAgICAgewogICAgICAg
ICBMb2NrZXI8TG9jaz4gbG9ja2VyKF9kYXRhVGFza3NMb2NrKTsKLSAgICAgICAgZm9yIChhdXRv
JiB0YXNrIDogX2RhdGFUYXNrcykKLSAgICAgICAgICAgIFt0YXNrIHNldFNlc3Npb246bmlsXTsK
KyAgICAgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbZGF0YVRhc2tzID0gV1RGTW92ZShfZGF0
YVRhc2tzKSwgcmFuZ2VSZXNwb25zZUdlbmVyYXRvciA9IFdURk1vdmUoX3JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYmIHRhc2sgOiBk
YXRhVGFza3MpCisgICAgICAgICAgICAgICAgW3Rhc2sgc2V0U2Vzc2lvbjpuaWxdOworICAgICAg
ICB9KTsKICAgICB9CisgICAgZW5zdXJlT25NYWluVGhyZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKF9s
b2FkZXIpXSB7IH0pOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbbG9hZGVyID0gV1RGTW92ZShf
bG9hZGVyKV0gewotICAgIH0pOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAoaWQpY29w
eVdpdGhab25lOihOU1pvbmUgKil6b25lCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBVTlVTRURfUEFSQU0oem9uZSk7CiAgICAgcmV0dXJuIFtzZWxmIHJldGFpbl07CiB9CkBA
IC0zMTUsNiArMzMwLDcgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAKIC0g
KHZvaWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzawog
eworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIHRhc2suc2Vz
c2lvbiA9IG5pbDsKIAogICAgIHsKQEAgLTMyMiwxMiArMzM4LDExIEBAIC0gKHZvaWQpdGFza0Nv
bXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzawogCiAgICAgICAgIEFT
U0VSVChfZGF0YVRhc2tzLmNvbnRhaW5zKHRhc2spKTsKICAgICAgICAgX2RhdGFUYXNrcy5yZW1v
dmUodGFzayk7Ci0gICAgICAgIGlmICghX2RhdGFUYXNrcy5pc0VtcHR5KCkgfHwgIV9pbnZhbGlk
YXRlZCkKKyAgICAgICAgaWYgKCFfZGF0YVRhc2tzLmlzRW1wdHkoKSB8fCAhX2ludmFsaWRhdGVk
LmxvYWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8V2Vi
Q29yZU5TVVJMU2Vzc2lvbj4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKLSAgICBbc2VsZiBhZGREZWxl
Z2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZl0geworICAgIFtzZWxmIGFkZERlbGVnYXRlT3BlcmF0
aW9uOltzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIGlmIChbc3Ryb25n
U2VsZi5nZXQoKS5kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Np
b246ZGlkQmVjb21lSW52YWxpZFdpdGhFcnJvcjopXSkKICAgICAgICAgICAgIFtzdHJvbmdTZWxm
LmdldCgpLmRlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0
KCkgZGlkQmVjb21lSW52YWxpZFdpdGhFcnJvcjpuaWxdOwogICAgIH1dOwpAQCAtMzM1LDkgKzM1
MCw4IEBAIC0gKHZvaWQpdGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
ICopdGFzawogCiAtICh2b2lkKWFkZERlbGVnYXRlT3BlcmF0aW9uOihGdW5jdGlvbjx2b2lkKCk+
JiYpZnVuY3Rpb24KIHsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbj4gc3Ryb25n
U2VsZiB7IHNlbGYgfTsKICAgICBSZXRhaW5QdHI8TlNCbG9ja09wZXJhdGlvbj4gb3BlcmF0aW9u
ID0gW05TQmxvY2tPcGVyYXRpb24gYmxvY2tPcGVyYXRpb25XaXRoQmxvY2s6bWFrZUJsb2NrUHRy
KFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKV07Ci0gICAgZGlzcGF0Y2hfYXN5bmMoX2ludGVybmFs
UXVldWUuZ2V0KCksIFtzdHJvbmdTZWxmLCBvcGVyYXRpb25dIHsKKyAgICBfaW50ZXJuYWxRdWV1
ZS0+ZGlzcGF0Y2goW3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIG9wZXJhdGlvbiA9IFdU
Rk1vdmUob3BlcmF0aW9uKV0gewogICAgICAgICBbc3Ryb25nU2VsZi5nZXQoKS5kZWxlZ2F0ZVF1
ZXVlIGFkZE9wZXJhdGlvbjpvcGVyYXRpb24uZ2V0KCldOwogICAgICAgICBbb3BlcmF0aW9uIHdh
aXRVbnRpbEZpbmlzaGVkXTsKICAgICB9KTsKQEAgLTM0NSwyMSArMzU5LDI0IEBAIC0gKHZvaWQp
YWRkRGVsZWdhdGVPcGVyYXRpb246KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgogCiAtICh2
b2lkKXRhc2s6KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqKXRhc2sgZGlkUmVjZWl2ZUNP
UlNBY2Nlc3NDaGVja1Jlc3VsdDooQk9PTClyZXN1bHQKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFz
c2VydElzT25Xb3JrUXVldWUoKTsKICAgICBVTlVTRURfUEFSQU0odGFzayk7CiAgICAgaWYgKCFy
ZXN1bHQpCi0gICAgICAgIF9jb3JzUmVzdWx0cyA9IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNj
ZXNzQ2hlY2tSZXN1bHRzOjpGYWlsOwotICAgIGVsc2UgaWYgKF9jb3JzUmVzdWx0cyAhPSBXZWJD
b3JlTlNVUkxTZXNzaW9uQ09SU0FjY2Vzc0NoZWNrUmVzdWx0czo6RmFpbCkKLSAgICAgICAgX2Nv
cnNSZXN1bHRzID0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jlc3VsdHM6OlBh
c3M7CisgICAgICAgIHNlbGYuY29yc1Jlc3VsdHMgPSBXZWJDb3JlTlNVUkxTZXNzaW9uQ09SU0Fj
Y2Vzc0NoZWNrUmVzdWx0czo6RmFpbDsKKyAgICBlbHNlIGlmIChzZWxmLmNvcnNSZXN1bHRzICE9
IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpGYWlsKQorICAgICAg
ICBzZWxmLmNvcnNSZXN1bHRzID0gV2ViQ29yZU5TVVJMU2Vzc2lvbkNPUlNBY2Nlc3NDaGVja1Jl
c3VsdHM6OlBhc3M7CiB9CiAKIC0gKHZvaWQpdGFzazooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrICopdGFzayBkaWRSZWNlaXZlUmVzcG9uc2VGcm9tT3JpZ2luOihSZWY8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYpb3JpZ2luCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29y
a1F1ZXVlKCk7CiAgICAgVU5VU0VEX1BBUkFNKHRhc2spOwogICAgIF9vcmlnaW5zLmFkZChXVEZN
b3ZlKG9yaWdpbikpOwogfQogCiAtIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yJily
YW5nZVJlc3BvbnNlR2VuZXJhdG9yCiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29y
a1F1ZXVlKCk7CiAgICAgcmV0dXJuICpfcmFuZ2VSZXNwb25zZUdlbmVyYXRvcjsKIH0KIApAQCAt
NDA2LDcgKzQyMyw3IEBAIC0gKFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYpbG9hZGVyCiBA
ZHluYW1pYyBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrczsKIC0gKEJPT0wpZGlkUGFzc0NPUlNBY2Nl
c3NDaGVja3MKIHsKLSAgICByZXR1cm4gX2NvcnNSZXN1bHRzID09IFdlYkNvcmVOU1VSTFNlc3Np
b25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpQYXNzOworICAgIHJldHVybiBzZWxmLmNvcnNSZXN1
bHRzID09IFdlYkNvcmVOU1VSTFNlc3Npb25DT1JTQWNjZXNzQ2hlY2tSZXN1bHRzOjpQYXNzOwog
fQogCiAtIChCT09MKXdvdWxkVGFpbnRPcmlnaW46KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luICYpb3JpZ2luCkBAIC00MjAsNyArNDM3LDcgQEAgLSAoQk9PTCl3b3VsZFRhaW50T3JpZ2lu
Oihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiAmKW9yaWdpbgogCiAtICh2b2lkKWZpbmlz
aFRhc2tzQW5kSW52YWxpZGF0ZQogewotICAgIF9pbnZhbGlkYXRlZCA9IFlFUzsKKyAgICBfaW52
YWxpZGF0ZWQuc3RvcmUoWUVTKTsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
X2RhdGFUYXNrc0xvY2spOwogICAgICAgICBpZiAoIV9kYXRhVGFza3MuaXNFbXB0eSgpKQpAQCAt
NDk0LDEwICs1MTEsMTAgQEAgLSAodm9pZClnZXRBbGxUYXNrc1dpdGhDb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNBcnJheTxfX2tpbmRvZiBOU1VSTFNlc3Npb24KIAogLSAoTlNVUkxTZXNz
aW9uRGF0YVRhc2sgKilkYXRhVGFza1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
CiB7Ci0gICAgaWYgKF9pbnZhbGlkYXRlZCkKKyAgICBpZiAoX2ludmFsaWRhdGVkLmxvYWQoKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2sgYWxsb2NdIGluaXRXaXRoU2Vzc2lvbjpzZWxmIGlkZW50aWZp
ZXI6X25leHRUYXNrSWRlbnRpZmllcisrIHJlcXVlc3Q6cmVxdWVzdF0pOworICAgIGF1dG8gdGFz
ayA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgYWxsb2NdIGluaXRXaXRo
U2Vzc2lvbjpzZWxmIGlkZW50aWZpZXI6X25leHRUYXNrSWRlbnRpZmllcisrIHJlcXVlc3Q6cmVx
dWVzdCB0YXJnZXRRdWV1ZTpfdGFyZ2V0UXVldWUuZ2V0KCldKTsKICAgICB7CiAgICAgICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIoX2RhdGFUYXNrc0xvY2spOwogICAgICAgICBfZGF0YVRhc2tzLmFk
ZCh0YXNrLmdldCgpKTsKQEAgLTUxNCw3ICs1MzEsNyBAQCAtICh2b2lkKXNlbmRIMlBpbmc6KE5T
VVJMICopdXJsIHBvbmdIYW5kbGVyOih2b2lkICheKShOU0Vycm9yICplcnJvciwgTlNUaW1lSW50
ZQogewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIo
c2VsZiksIHVybCA9IHJldGFpblB0cih1cmwpLCBwb25nSGFuZGxlciA9IG1ha2VCbG9ja1B0cihw
b25nSGFuZGxlcildICgpIG11dGFibGUgewogCi0gICAgICAgIGlmIChfaW52YWxpZGF0ZWQpCisg
ICAgICAgIGlmIChfaW52YWxpZGF0ZWQubG9hZCgpKQogICAgICAgICAgICAgcmV0dXJuIHBvbmdI
YW5kbGVyKGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpOU1VSTEVycm9y
RG9tYWluIGNvZGU6TlNVUkxFcnJvclVua25vd24gdXNlckluZm86bmlsXSkuZ2V0KCksIDApOwog
CiAgICAgICAgIHNlbGYubG9hZGVyLnNlbmRIMlBpbmcodXJsLmdldCgpLCBbc2VsZiwgc3Ryb25n
U2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHBvbmdIYW5kbGVyID0gV1RGTW92ZShwb25nSGFu
ZGxlcildIChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmIHJlc3VsdCkgbXV0YWJs
ZSB7CkBAIC01MjQsOCArNTQxLDEwIEBAIC0gKHZvaWQpc2VuZEgyUGluZzooTlNVUkwgKil1cmwg
cG9uZ0hhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKmVycm9yLCBOU1RpbWVJbnRlCiAgICAgICAg
ICAgICAgICAgaW50ZXJ2YWwgPSByZXN1bHQudmFsdWUoKS52YWx1ZSgpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGVycm9yID0gcmVzdWx0LmVycm9yKCk7Ci0gICAgICAgICAg
ICBbc2VsZiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbcG9uZ0hhbmRsZXIgPSBXVEZNb3ZlKHBvbmdI
YW5kbGVyKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKSwgaW50ZXJ2YWxdIHsKLSAgICAgICAgICAg
ICAgICBwb25nSGFuZGxlcihlcnJvci5nZXQoKSwgaW50ZXJ2YWwpOworICAgICAgICAgICAgW3Nl
bGYgYWRkRGVsZWdhdGVPcGVyYXRpb246W3BvbmdIYW5kbGVyID0gV1RGTW92ZShwb25nSGFuZGxl
ciksIGVycm9yID0gV1RGTW92ZShlcnJvciksIGludGVydmFsXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwb25nSGFuZGxlciA9IFdURk1vdmUocG9uZ0hh
bmRsZXIpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpLCBpbnRlcnZhbF0geworICAgICAgICAgICAg
ICAgICAgICBwb25nSGFuZGxlcihlcnJvci5nZXQoKSwgaW50ZXJ2YWwpOworICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgfV07CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNTk3LDkg
KzYxNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2tDbGllbnQgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQorICAg
IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2sgKnRhc2ssIFdURjo6V29ya1F1ZXVlJiB0YXJnZXQpCiAgICAgICAgIDogbV90YXNrKHRh
c2spCisgICAgICAgICwgbV90YXJnZXRRdWV1ZSh0YXJnZXQpCiAgICAgeworICAgICAgICBtX3Rh
cmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgfQogCiAgICAgdm9pZCBjbGVh
clRhc2soKTsKQEAgLTYxNCwxOSArNjM1LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRGaW5p
c2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBMb2NrIG1fdGFza0xvY2s7Ci0gICAgV2Vha09iakNQ
dHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2sgV1RGX0dVQVJERURfQllfTE9D
SyhtX3Rhc2tMb2NrKTsKKyAgICBXZWFrT2JqQ1B0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2s+IG1fdGFzazsgLy8gT25seSBhY2Nlc3NlZCBvbiB0YXJnZXQgcXVldWUuCisgICAgUmVmPFdU
Rjo6V29ya1F1ZXVlPiBtX3RhcmdldFF1ZXVlOwogfTsKIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ6OmNsZWFyVGFzaygpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1f
dGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAg
ICAgbV90YXNrID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQ6OmRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3Rhcmdl
dFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAg
IHJldHVybjsKIApAQCAtNjM1LDggKzY1Niw4IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrQ2xpZW50OjpkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlCiAK
IHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hl
Y2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElz
T25Xb3JrUXVldWUoKTsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKIApA
QCAtNjQ1LDcgKzY2Niw3IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50
OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYKIAogYm9vbCBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVl
LT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtNjU0LDcgKzY3NSw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAK
IHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVl
LT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVy
bjsKIApAQCAtNjYzLDIwICs2ODQsMTYgQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc28KIAogdm9p
ZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlZGlyZWN0UmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIExvY2tlciBs
b2NrZXIgeyBtX3Rhc2tMb2NrIH07CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV90YXNr
IHJlc291cmNlOiZyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0OnJlc3BvbnNlIHJlcXVlc3Q6V1RG
TW92ZShyZXF1ZXN0KSBjb21wbGV0aW9uSGFuZGxlcjogW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgcmVxdWVzdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3JlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwotICAg
ICAgICB9KTsKLSAgICB9XTsKKyAgICBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSByZWNlaXZl
ZFJlZGlyZWN0OnJlc3BvbnNlIHJlcXVlc3Q6V1RGTW92ZShyZXF1ZXN0KSBjb21wbGV0aW9uSGFu
ZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CiB9CiAKIHZvaWQgV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0g
ICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKKyAgICBtX3RhcmdldFF1ZXVlLT5hc3Nl
cnRJc09uV29ya1F1ZXVlKCk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIApA
QCAtNjg1LDcgKzcwMiw3IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50
OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlCiAKIHZvaWQgV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIExvY2tl
ciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CisgICAgbV90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldv
cmtRdWV1ZSgpOwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKQEAgLTY5NCw3
ICs3MTEsNyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZh
aWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cgogCiB2b2lkIFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OworICAgIG1fdGFyZ2V0UXVldWUtPmFzc2VydElzT25X
b3JrUXVldWUoKTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCkBAIC03MDYs
MTIgKzcyMywxMyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9h
ZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzbwogI3ByYWdtYSBtYXJrIC0gV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2sKLS0gKGlkKWluaXRXaXRoU2Vzc2lvbjooV2ViQ29yZU5TVVJMU2Vzc2lv
biAqKXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlmaWVyIHJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QKKy0gKGlkKWluaXRXaXRoU2Vzc2lvbjooV2ViQ29yZU5TVVJM
U2Vzc2lvbiAqKXNlc3Npb24gaWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlmaWVyIHJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdGFyZ2V0UXVldWU6KFdURjo6V29ya1F1ZXVlKil0
YXJnZXRRdWV1ZQogewogICAgIHNlbGYudGFza0lkZW50aWZpZXIgPSBpZGVudGlmaWVyOwotICAg
IHNlbGYuc2Vzc2lvbiA9IHNlc3Npb247CiAgICAgc2VsZi5zdGF0ZSA9IE5TVVJMU2Vzc2lvblRh
c2tTdGF0ZVN1c3BlbmRlZDsKICAgICBzZWxmLnByaW9yaXR5ID0gTlNVUkxTZXNzaW9uVGFza1By
aW9yaXR5RGVmYXVsdDsKKyAgICBzZWxmLnNlc3Npb24gPSBzZXNzaW9uOworICAgIF90YXJnZXRR
dWV1ZSA9IHRhcmdldFF1ZXVlOwogCiAgICAgLy8gQ29yZU1lZGlhIHdpbGwgZXhwbGljaXRseSBh
ZGQgYSB1c2VyIGFnZW50IGhlYWRlci4gUmVtb3ZlIGlmIHByZXNlbnQuCiAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZVVSTFJlcXVlc3Q+IG11dGFibGVSZXF1ZXN0OwpAQCAtNzM2LDcgKzc1NCw3IEBA
IC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogCiAtICh2b2lkKV9yZXN0YXJ0CiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElz
T25Xb3JrUXVldWUoKTsKIAogICAgIFtzZWxmIF9jYW5jZWxdOwogCkBAIC03NDYsMjMgKzc2NCwy
OCBAQCAtICh2b2lkKV9yZXN0YXJ0CiAgICAgaWYgKFtzZWxmLnNlc3Npb24gcmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcl0ud2lsbEhhbmRsZVJlcXVlc3Qoc2VsZiwgc2VsZi5vcmlnaW5hbFJlcXVlc3Qp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBfcmVzb3VyY2UgPSBzZWxmLnNlc3Npb24ubG9hZGVy
LnJlcXVlc3RSZXNvdXJjZShzZWxmLm9yaWdpbmFsUmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpEaXNhbGxvd0NhY2hpbmcpOwotICAgIGlmIChfcmVzb3Vy
Y2UpIHsKLSAgICAgICAgX3Jlc291cmNlLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQoc2VsZikpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIEEgbmlsIHJldHVybiBmcm9tIHJlcXVlc3RSZXNvdXJjZSBtZWFucyB0aGUg
bG9hZCB3YXMgY2FuY2VsbGVkIGJ5IGEgZGVsZWdhdGUgY2xpZW50Ci0gICAgW3NlbGYgX3Jlc291
cmNlOm5pbCBsb2FkRmluaXNoZWRXaXRoRXJyb3I6UmVzb3VyY2VFcnJvcihSZXNvdXJjZUVycm9y
OjpUeXBlOjpDYW5jZWxsYXRpb24pIG1ldHJpY3M6eyB9XTsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtsb2FkZXIgPSBSZWYgeyBzZWxmLnNlc3Npb24ubG9hZGVyIH0sIHN0cm9uZ1NlbGYgPSByZXRh
aW5QdHIoc2VsZildICgpIG11dGFibGUgeworICAgICAgICBhdXRvIHJlc291cmNlID0gbG9hZGVy
LT5yZXF1ZXN0UmVzb3VyY2UoW3N0cm9uZ1NlbGYgb3JpZ2luYWxSZXF1ZXN0XSwgUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpEaXNhbGxvd0NhY2hpbmcpOworICAgICAg
ICBzdHJvbmdTZWxmLT5fdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtyZXNvdXJjZSA9IFdURk1vdmUo
cmVzb3VyY2UpLCBzdHJvbmdTZWxmXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0cm9uZ1Nl
bGYtPl9yZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICAgICAgaWYgKHJlc291cmNlKQorICAg
ICAgICAgICAgICAgIHJlc291cmNlLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2tDbGllbnQoc3Ryb25nU2VsZi5nZXQoKSwgKnN0cm9uZ1NlbGYtPl90
YXJnZXRRdWV1ZSkpKTsKKyAgICAgICAgICAgIGVsc2UgLy8gQSBuaWwgcmV0dXJuIGZyb20gcmVx
dWVzdFJlc291cmNlIG1lYW5zIHRoZSBsb2FkIHdhcyBjYW5jZWxsZWQgYnkgYSBkZWxlZ2F0ZSBj
bGllbnQKKyAgICAgICAgICAgICAgICBbc3Ryb25nU2VsZiBfcmVzb3VyY2U6bmlsIGxvYWRGaW5p
c2hlZFdpdGhFcnJvcjpSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxh
dGlvbikgbWV0cmljczogeyB9XTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIC0gKHZvaWQp
X2NhbmNlbAogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgX3RhcmdldFF1ZXVl
LT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CisKICAgICBpZiAoX3Jlc291cmNlKSB7Ci0gICAgICAg
IF9yZXNvdXJjZS0+c3RvcCgpOwogICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChudWxscHRy
KTsKLSAgICAgICAgX3Jlc291cmNlID0gbmlsOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFty
ZXNvdXJjZSA9IF9yZXNvdXJjZV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNvdXJjZS0+
c3RvcCgpOworICAgICAgICB9KTsKKyAgICAgICAgLy8gVE9ETzogU2hvdWxkIF9yZXNvdXJjZSBz
aG91bGQgYmUgc2V0IHRvIG5pbCA/CiAgICAgfQogICAgIGlmIChhdXRvICpzZXNzaW9uID0gc2Vs
Zi5zZXNzaW9uKQogICAgICAgICBbc2Vzc2lvbiByYW5nZVJlc3BvbnNlR2VuZXJhdG9yXS5yZW1v
dmVUYXNrKHNlbGYpOwpAQCAtNzg5LDYgKzgxMiw3IEBAIC0gKE5TVVJMUmVxdWVzdCAqKWN1cnJl
bnRSZXF1ZXN0CiAKIC0gKE5TRXJyb3IgKillcnJvcgogeworICAgIC8vIFRPRE86IF9lcnJvciBp
cyBuZXZlciBzZXQgYW5kIGlzIGFsd2F5cyBuaWwuCiAgICAgcmV0dXJuIGFkb3B0TlMoW19lcnJv
ciBjb3B5XSkuYXV0b3JlbGVhc2UoKTsKIH0KIApAQCAtODA0LDEyICs4MjgsMTYgQEAgLSAodm9p
ZClzZXRUYXNrRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24KIAogLSAoV2ViQ29y
ZU5TVVJMU2Vzc2lvbiAqKXNlc3Npb24KIHsKLSAgICByZXR1cm4gX3Nlc3Npb24uZ2V0KCkuZ2V0
KCk7CisgICAgQHN5bmNocm9uaXplZChzZWxmKSB7CisgICAgICAgIHJldHVybiBfc2Vzc2lvbi5n
ZXQoKS5hdXRvcmVsZWFzZSgpOworICAgIH0KIH0KIAogLSAodm9pZClzZXRTZXNzaW9uOihXZWJD
b3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbgogewotICAgIF9zZXNzaW9uID0gc2Vzc2lvbjsKKyAg
ICBAc3luY2hyb25pemVkKHNlbGYpIHsKKyAgICAgICAgX3Nlc3Npb24gPSBzZXNzaW9uOworICAg
IH0KIH0KIAogLSAoTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCkBAIC04MjIsNyArODUwLDcgQEAg
LSAodm9pZCljYW5jZWwKICAgICBpZiAoc2VsZi5zdGF0ZSA9PSBOU1VSTFNlc3Npb25UYXNrU3Rh
dGVDb21wbGV0ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBzZWxmLnN0YXRlID0gTlNVUkxTZXNz
aW9uVGFza1N0YXRlQ2FuY2VsaW5nOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNl
bGYgPSByZXRhaW5QdHIoc2VsZildIHsKKyAgICBfdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtwcm90
ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIF9j
YW5jZWxdOwogICAgICAgICBbcHJvdGVjdGVkU2VsZiBfcmVzb3VyY2U6bnVsbHB0ciBsb2FkRmlu
aXNoZWRXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4g
Y29kZTpOU1VSTEVycm9yQ2FuY2VsbGVkIHVzZXJJbmZvOm5pbF0gbWV0cmljczpOZXR3b3JrTG9h
ZE1ldHJpY3MgeyB9XTsKICAgICB9KTsKQEAgLTgzMCw3ICs4NTgsNyBAQCAtICh2b2lkKWNhbmNl
bAogCiAtICh2b2lkKXN1c3BlbmQKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4oc2VsZildIHsKKyAg
ICBfdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzaz4oc2VsZildIHsKICAgICAgICAgLy8gTlNVUkxTZXNzaW9u
RGF0YVRhc2tzIG11c3Qgc3RhcnQgb3ZlciBhZnRlciBzdXNwZW5kaW5nLCBzbyB3aGlsZQogICAg
ICAgICAvLyB3ZSBjb3VsZCBkZWZlciBsb2FkaW5nIGF0IHRoaXMgcG9pbnQsIGluc3RlYWQgY2Fu
Y2VsIGFuZCByZXN0YXJ0CiAgICAgICAgIC8vIHVwb24gcmVzdW1lIHNvIGFzIHRvIGFkaGVyZSB0
byBOU1VSTFNlc3Npb25EYXRhVGFzayBzZW1hbnRpY3MuCkBAIC04NDEsNyArODY5LDcgQEAgLSAo
dm9pZClzdXNwZW5kCiAKIC0gKHZvaWQpcmVzdW1lCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNl
bGYpXSB7CisgICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkU2VsZiA9IFJldGFp
blB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNlbGYpXSB7CiAgICAgICAgIGlmIChw
cm90ZWN0ZWRTZWxmLmdldCgpLnN0YXRlICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVN1c3BlbmRl
ZCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtODUyLDkgKzg4MCwxMSBAQCAtICh2b2lkKXJl
c3VtZQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpICYmIF9y
ZXNvdXJjZSkgewotICAgICAgICBpZiAoYXV0byogY2xpZW50ID0gX3Jlc291cmNlLT5jbGllbnQo
KSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudCo+KGNsaWVudCktPmNsZWFyVGFzaygpOworICAgIGlmIChfcmVzb3VyY2UpIHsKKyAgICAg
ICAgX3RhcmdldFF1ZXVlLT5kaXNwYXRjaChbY2xpZW50ID0gX3Jlc291cmNlLT5jbGllbnQoKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2xpZW50KQorICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudCo+KGNsaWVudC5nZXQo
KSktPmNsZWFyVGFzaygpOworICAgICAgICB9KTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
cmVzb3VyY2UgPSBXVEZNb3ZlKF9yZXNvdXJjZSldIHsgfSk7CiAgICAgfQogCkBAIC04NzMsNiAr
OTAzLDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX3RpbWluZ0RhdGEKIAogLSAodm9pZClyZXNvdXJj
ZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxv
bmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcp
dG90YWxCeXRlc1RvQmVTZW50CiB7CisgICAgX3RhcmdldFF1ZXVlLT5hc3NlcnRJc09uV29ya1F1
ZXVlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNl
ID09IF9yZXNvdXJjZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVzU2VudCk7CiAgICAgVU5VU0VE
X1BBUkFNKHRvdGFsQnl0ZXNUb0JlU2VudCk7CkBAIC04ODEsOSArOTEyLDkgQEAgLSAodm9pZCly
ZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2ln
bmVkIGxvbmcgbG9uZykKIAogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJilyZXNw
b25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcgogewotICAgIEFTU0VSVChyZXNw
b25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmsgfHwgcmVz
cG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpEaXNrQ2FjaGUgfHwg
cmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpEaXNrQ2FjaGVB
ZnRlclZhbGlkYXRpb24gfHwgcmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6
U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3Jr
UXVldWUoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3Vy
Y2UgPT0gX3Jlc291cmNlKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgW3Nl
bGYuc2Vzc2lvbiB0YXNrOnNlbGYgZGlkUmVjZWl2ZVJlc3BvbnNlRnJvbU9yaWdpbjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpKV07CiAgICAgW3NlbGYuc2Vzc2lvbiB0YXNr
OnNlbGYgZGlkUmVjZWl2ZUNPUlNBY2Nlc3NDaGVja1Jlc3VsdDpyZXNvdXJjZSA/IHJlc291cmNl
LT5kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCkgOiBZRVNdOwogICAgIHNlbGYuY291bnRPZkJ5
dGVzRXhwZWN0ZWRUb1JlY2VpdmUgPSByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsK
QEAgLTg5Myw4ICs5MjQsOSBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UqKXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFJlc291cgogICAgICAgICBfcmVz
b3VyY2UgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoU2hvdWxk
Q29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKICAgICB9Ci0gICAgCisKICAgICBSZXRhaW5QdHI8
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBzdHJvbmdTZWxmIHsgc2VsZiB9OworICAgIC8v
IEFjY2VzcyB0byBzZWxmLnNlc3Npb24gaXNuJ3QgdGhyZWFkLXNhZmUgOyB3ZWFrLXBvaW50ZXIg
YWNyb3NzIHRocmVhZC4KICAgICBpZiAoIXNlbGYuc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKICAgICBbc2Vs
Zi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmLCBzdHJvbmdSZXNwb25z
ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0
YWJsZSB7CkBAIC05MDIsMTQgKzkzNCwxNCBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFJlc291cgogCiAg
ICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5T
VVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRl
OwogICAgICAgICBpZiAoIVtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxl
cjopXSkgewotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBzdHJvbmdTZWxmLT5fdGFyZ2V0UXVldWUtPmRpc3BhdGNoKFtzdHJvbmdTZWxm
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBv
bGljeUNoZWNrOjpZZXMpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lv
biAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRh
c2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVSZXNwb25zZTpzdHJvbmdSZXNwb25zZS5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3N0cm9uZ1NlbGYsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU1VSTFNlc3Npb25SZXNw
b25zZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIGRpc3Bvc2l0aW9uLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0
cm9uZ1NlbGYtPl90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3N0cm9uZ1NlbGYsIGRpc3Bvc2l0aW9u
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBpZiAoZGlzcG9zaXRpb24gPT0gTlNVUkxTZXNzaW9uUmVz
cG9uc2VDYW5jZWwpCiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3Vs
ZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTky
MywxOCArOTU1LDE4IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgUmVzb3VyCiAKIC0gKEJPT0wpcmVzb3Vy
Y2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZToo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFz
c2VydElzT25Xb3JrUXVldWUoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3Vy
Y2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKIAotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0KICAgICAvLyBGSVhNRTogcmVtb3ZlIGlmIDxyZGFyOi8vcHJvYmxlbS8yMDAwMTk4NT4g
aXMgZXZlciByZXNvbHZlZC4KICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0KIAogLSAodm9pZClyZXNv
dXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJldGFp
blB0cjxOU0RhdGE+JiYpZGF0YQogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtR
dWV1ZSgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJj
ZSA9PSBfcmVzb3VyY2UpOwotICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246
W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7
CisgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IHJl
dGFpblB0cihzZWxmKSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKICAgICAgICAgc3Ryb25nU2Vs
Zi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBbZGF0YSBsZW5ndGhdOwogICAgICAgICBp
ZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Np
b25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAg
ICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNz
aW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpAQCAtOTQ0LDExICs5NzYsMTIgQEAgLSAo
dm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERh
dGE6KFJldGFpblB0cjxOU0RhdGEKIAogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JilyZXNwb25zZSByZXF1ZXN0OihSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25I
YW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiljb21w
bGV0aW9uSGFuZGxlcgogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgp
OwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBf
cmVzb3VyY2UpOwotICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9u
Z1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHJlc3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKSksIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAg
ICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCByZXNwb25zZSA9IHJldGFpblB0cihyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkp
LCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFyZ2V0UXVldWUgPSBfdGFyZ2V0UXVldWVdICgp
IG11dGFibGUgewogICAgICAgICBpZiAoIVtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBV
UkxSZXNwb25zZSBjbGFzc11dKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHRhcmdldFF1ZXVlLT5kaXNwYXRjaChbcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05
NTYsMTQgKzk4OSwxNCBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJlc291cgogCiAgICAgICAgIGlkPE5T
VVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRh
dGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBp
ZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246
dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmNvbXBsZXRpb25IYW5k
bGVyOildKSB7Ci0gICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQmxvY2sgPSBtYWtl
QmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgZW5z
dXJlT25NYWluVGhyZWFkKFtyZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgbmV3UmVxdWVzdCB9
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJCbG9jayA9IG1ha2VCbG9j
a1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFy
Z2V0UXVldWUgPSBXVEZNb3ZlKHRhcmdldFF1ZXVlKV0oTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICB0YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3JlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgW2RhdGFEZWxlZ2F0ZSBVUkxTZXNz
aW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24gdGFzazooTlNVUkxT
ZXNzaW9uVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246
KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lm5z
VVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSkgY29t
cGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJCbG9jay5nZXQoKV07CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICB0YXJnZXRRdWV1ZS0+ZGlzcGF0Y2goW3JlcXVlc3Qg
PSBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC05NzIs
NiArMTAwNSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3QgUmVzb3VyCiAKIC0gKHZvaWQpX3Jlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yIG1ldHJpY3M6KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpbWV0cmlj
cwogeworICAgIF90YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwog
ICAgIGlmIChzZWxmLnN0YXRlID09IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZUNvbXBsZXRlZCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtOTgwLDcgKzEwMTQsNyBAQCAtICh2b2lkKV9yZXNvdXJjZTooUGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6KE5TRXJy
bwogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYg
eyBzZWxmIH07CiAgICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb24+IHN0cm9uZ1Nlc3Np
b24geyBzZWxmLnNlc3Npb24gfTsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gc3Ryb25nRXJyb3Ig
eyBlcnJvciB9OwotICAgIGF1dG8gdGFza01ldHJpY3MgPSBhZG9wdE5TKFtbV2ViQ29yZU5TVVJM
U2Vzc2lvblRhc2tNZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNzOk5ldHdvcmtMb2FkTWV0
cmljcyhtZXRyaWNzKV0pOworICAgIGF1dG8gdGFza01ldHJpY3MgPSBhZG9wdE5TKFtbV2ViQ29y
ZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNzOm1ldHJpY3Mu
aXNvbGF0ZWRDb3B5KCkgb25UYXJnZXQ6X3RhcmdldFF1ZXVlLmdldCgpXSk7CiAgICAgW3NlbGYu
c2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiwgc3Ryb25nU2Vzc2lvbiwg
c3Ryb25nRXJyb3IsIHRhc2tNZXRyaWNzID0gV1RGTW92ZSh0YXNrTWV0cmljcyldICgpIG11dGFi
bGUgewogICAgICAgICBpZDxOU1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+IGRlbGVnYXRlID0gKGlk
PE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4pc3Ryb25nU2Vzc2lvbi5nZXQoKS5kZWxlZ2F0ZTsK
IApAQCAtOTkwLDcgKzEwMjQsNyBAQCAtICh2b2lkKV9yZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6KE5TRXJybwogICAgICAgICBp
ZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjp0YXNr
OmRpZENvbXBsZXRlV2l0aEVycm9yOildKQogICAgICAgICAgICAgW2RlbGVnYXRlIFVSTFNlc3Np
b246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1Nlc3Npb24uZ2V0KCkgdGFzazooTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZENvbXBsZXRlV2l0aEVycm9yOnN0cm9uZ0Vy
cm9yLmdldCgpXTsKIAotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJv
bmdTZXNzaW9uXSB7CisgICAgICAgIHN0cm9uZ1NlbGYtPl90YXJnZXRRdWV1ZS0+ZGlzcGF0Y2go
W3N0cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb25dIHsKICAgICAgICAgICAgIFtzdHJvbmdTZXNzaW9u
IHRhc2tDb21wbGV0ZWQ6c3Ryb25nU2VsZi5nZXQoKV07CiAgICAgICAgIH0pOwogICAgIH1dOwpA
QCAtOTk4LDE2ICsxMDMyLDE5IEBAIC0gKHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjooTlNFcnJvCiAKIC0gKHZvaWQp
cmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9yJillcnJvcgogeworICAgIF90
YXJnZXRRdWV1ZS0+YXNzZXJ0SXNPbldvcmtRdWV1ZSgpOwogICAgIFtzZWxmIF9yZXNvdXJjZTpy
ZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpIG1ldHJpY3M6TmV0
d29ya0xvYWRNZXRyaWNzIHsgfV07CiB9CiAKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgUmVzb3VyY2VF
cnJvciYpZXJyb3IKIHsKKyAgICBfdGFyZ2V0UXVldWUtPmFzc2VydElzT25Xb3JrUXVldWUoKTsK
ICAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOmVycm9y
Lm5zRXJyb3IoKSBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwogfQogCiAtICh2b2lk
KXJlc291cmNlRmluaXNoZWQ6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbWV0cmlj
czooY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzCiB7CisgICAgX3RhcmdldFF1ZXVl
LT5hc3NlcnRJc09uV29ya1F1ZXVlKCk7CiAgICAgW3NlbGYgX3Jlc291cmNlOnJlc291cmNlIGxv
YWRGaW5pc2hlZFdpdGhFcnJvcjpuaWwgbWV0cmljczptZXRyaWNzXTsKIH0KIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCA2MTUxMDI2OTQxOGNjZTIzNTE2ZGMzNWE3NmFmNmNkZmU0YTUxYWQxLi4zYWQ1
MzhmYjlkM2FhZDdmYjBlNmM5ZGQ0MmFhMTczYjM0MGNmMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0z
MTQsNiArMzE0LDkgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgfSk7CiAjZW5kaWYKIAorICAgIGlmICht
X3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKQorICAgICAgICBtX3JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyLT5zdG9wTGlzdGVuaW5nRm9ySVBDKCk7CisKICAgICBncHVQcm9jZXNzKCkuY29u
bmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChjb25uZWN0aW9uKTsKICAgICBncHVQcm9jZXNzKCku
cmVtb3ZlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7IC8vIE1heSBkZXN0cm95IHx0
aGlzfC4KIH0KQEAgLTQ1NSw4ICs0NTgsMTEgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW90ZUF1ZGlvRGVzdGluYXRpb24KIAog
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkKIHsKLSAgICBpZiAoIW1fcmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIpCisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgaWYgKCFtX3Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKSB7CiAgICAgICAgIG1fcmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIgPSBtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyPigpOworICAg
ICAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLT5pbml0aWFsaXplQ29ubmVjdGlvbigm
Y29ubmVjdGlvbigpKTsKKyAgICB9CiAKICAgICByZXR1cm4gKm1fcmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5kZXggN2Y1MTJjNmMxMWE4ZTcxMDhjZjAwNjJiNTg0
ZDI3YjU4OTA4ZDE4Zi4uNzMzOGEzZWQxM2ViMTNmOWZhYzc5YjA2Y2RkYjJlM2RmNzIzOWM1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNiBAQCBSZW1vdGVNZWRpYVJlc291cmNlOjpSZW1v
dGVNZWRpYVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyJiByZW1vdGVNZWRpYQog
CiBSZW1vdGVNZWRpYVJlc291cmNlOjp+UmVtb3RlTWVkaWFSZXNvdXJjZSgpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAgICAgc3RvcCgpOwogICAgIGlmICghbV9yZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNzIsMTIgKzcxLDEyIEBAIGJv
b2wgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0
CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV9jbGllbnQpCisgICAgYXV0byBjbGllbnQgPSB0
aGlzLT5jbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsK
LSAgICBtX2NsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UsIFtwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYXV0byBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7Ci0gICAgICAgIEFT
U0VSVChpc01haW5SdW5Mb29wKCkpOworICAgIGNsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCgqdGhp
cywgcmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBzaG91bGRDb250aW51ZSkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZVBv
bGljeUNoZWNrOjpObykKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnN0b3AoKTsKIApAQCAt
ODcsMzkgKzg2LDM5IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAKIHZvaWQgUmVtb3RlTWVk
aWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+cmVkaXJlY3RSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShy
ZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAo
YXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5yZWRpcmVjdFJl
Y2VpdmVkKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVp
bnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQogewotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQs
IHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgaWYgKGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50
KCkpCisgICAgICAgIGNsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRl
c1RvQmVTZW50KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAg
bV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSk7CisgICAgaWYgKGF1dG8gY2xpZW50
ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBk
YXRhKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjphY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgbV9kaWRQYXNzQWNjZXNz
Q29udHJvbENoZWNrID0gZmFsc2U7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKCp0aGlzLCBlcnJvcik7CisgICAgaWYgKGF1dG8g
Y2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+YWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKCp0aGlzLCBlcnJvcik7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6
bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBlcnJvcik7CisgICAgaWYg
KGF1dG8gY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+bG9hZEZhaWxl
ZCgqdGhpcywgZXJyb3IpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmxvYWRGaW5p
c2hlZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKKyAg
ICBpZiAoYXV0byBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5sb2Fk
RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBjYzcwZDFjNDE2YmI5YzNjOWI1MGJiNzliMjc1YTIz
YmFiOWI0MGVmLi43ZjlmZTcyODBiNTljNjRhMzI1OWE3NTAxYjZhM2U2Yjc5YTU5NDEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlcjo6UmVtb3RlTWVkaWFSZXNvdXJjZUxv
YWRlcihSZW1vdGVNZWRpYVBsYXllclByb3h5JiByZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAg
IDogbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KHJlbW90ZU1lZGlhUGxheWVyUHJveHkpCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiB9CiAKIFJlbW90ZU1lZGlhUmVzb3VyY2VMb2Fk
ZXI6On5SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyKCkKQEAgLTQ2LDYgKzQ3LDcgQEAgUmVtb3Rl
TWVkaWFSZXNvdXJjZUxvYWRlcjo6flJlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIoKQogCiBSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgTG9hZE9wdGlvbnMgb3B0aW9u
cykKIHsKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICAgICBpZiAoIW1fcmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTU0LDYgKzU2LDcg
QEAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKFJlc291cmMKIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTG9h
ZGVyOjpzZW5kSDJQaW5nKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPFNlY29uZHMsIFJlc291cmNlRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
eworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIGlmICghbV9yZW1vdGVNZWRpYVBs
YXllclByb3h5KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0
MGUzODEzYTQ4YWFiODM3MjM3NTMyOWJhYzk2YTEyNjY3MDg3OGUyLi4zMmUxMmY1N2U0NGRlZWMz
YTA1YjI0Nzk0NzZlMGZkNmJkOGRjMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTQxLDkg
KzQxLDIwIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVy
KFJlbW90ZU1lZGlhUGxheWVyUHJveHkmKTsKICAgICB+UmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRl
cigpOwogCisgICAgc3RhdGljIFJlZjxXVEY6OldvcmtRdWV1ZT4gZGVmYXVsdFF1ZXVlKCkKKyAg
ICB7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJlZjxXVEY6OldvcmtRdWV1ZT4+IG1lc3NhZ2VRdWV1ZTsK
KyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgW10geworICAgICAgICAgICAgbWVzc2Fn
ZVF1ZXVlLmNvbnN0cnVjdChXb3JrUXVldWU6OmNyZWF0ZSgiUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyIiwgV1RGOjpXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCkpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIG1lc3NhZ2VRdWV1ZS5nZXQoKTsKKyAgICB9CisKIHByaXZhdGU6CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNl
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBMb2FkT3B0aW9ucykgZmluYWw7CiAgICAgdm9p
ZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CisgICAg
UmVmPFdURjo6V29ya1F1ZXVlPiB0YXJnZXRRdWV1ZSgpIGZpbmFsIHsgcmV0dXJuIGRlZmF1bHRR
dWV1ZSgpOyB9CiAKICAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCAwMWFl
YjQyNzk4ZTlhY2IxM2E5NWQ1MWViY2M2MTNjY2E2OTJjZDVhLi4yYzRkMzdmNTM0YjhmMmFhMzg2
NjNhYzYzYjgyOTU4MTA0OTVjOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTI4
LDkgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCkBAIC0zOCwxMiArMzksMjYgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlcjo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKQorUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXI6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkgPSBkZWZhdWx0OworUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXI6On5SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpID0gZGVm
YXVsdDsKKwordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6c3RvcExpc3RlbmluZ0Zv
cklQQygpCiB7CisgICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb24obnVsbHB0cik7CiB9CiAKLVJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjp+UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKQordm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uKQogeworICAgIGlmIChtX2Nvbm5lY3Rpb24gPT0gY29ubmVj
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAg
bV9jb25uZWN0aW9uLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworCisgICAg
bV9jb25uZWN0aW9uID0gY29ubmVjdGlvbjsKKworICAgIGlmIChtX2Nvbm5lY3Rpb24pCisgICAg
ICAgIG1fY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBSZW1vdGVN
ZWRpYVJlc291cmNlTG9hZGVyOjpkZWZhdWx0UXVldWUoKSwgdGhpcyk7CiB9CiAKIHZvaWQgUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmFkZE1lZGlhUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlh
UmVzb3VyY2UmIHJlbW90ZU1lZGlhUmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4
IDEzYjc2ZTgwYTQ5OGM5NDVlMWM0NmU5MWZkODQ3OTgyYjVlZDc0MTEuLmYxNzNmMjJkMDdiNjBi
NmUzNDM0ZmFjYWVhOWEyODdlNDE0ZGJkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCkBA
IC01MCwxNiArNTEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVNZWRpYVJl
c291cmNlOwogCiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcgotICAgIDogcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246Oldv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKTsKICAgICB+UmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIoKTsKIAorICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBD
OjpDb25uZWN0aW9uKik7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CisKICAgICB2
b2lkIGFkZE1lZGlhUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90
ZU1lZGlhUmVzb3VyY2UmKTsKICAgICB2b2lkIHJlbW92ZU1lZGlhUmVzb3VyY2UoUmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OwogCiBwcml2YXRlOgpAQCAtNzIsNiArNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEZp
bmlzaGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKIAogICAgIEhhc2hNYXA8UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50
aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2UqPiBtX3JlbW90ZU1lZGlhUmVzb3VyY2VzOworICAg
IFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVhZGQ4NDczMGYxMWI3NzNiMDM1MmRiYWFmZThk
ZGFjZGE4NzYwOTMuLjE4ZGI5NTY1YjQ0ZWYwNjNiZTEzZGJjNTIyZDE1NzcwMWE1NDBlMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTIwMSwxNSArMjAxLDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9v
CiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUo
cG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBkYXRhLCBpbnQ2NF90IGVuY29kZWRE
YXRhTGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgp
LCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3Jr
IHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSBy
ZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0lu
dGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIG1faW50
ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBl
bmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9s
bGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxlbmd0
aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAg
ICAgICAgZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVy
KSksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShX
VEZNb3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggYWM1NDIyZmMwNjcxMGJkMGUwODdlMGY0NDA5ZWQ5
NDAxN2MwY2YxNi4uMWE1NDBmOTc3MWZhMDFjNjBmYmQ1OWQ5MzEzZmQxYWVjZmY0ZTM4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFNl
bmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoSVBDOjpT
aGFyZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
dm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7Cg==
</data>
<flag name="commit-queue"
          id="476792"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>