<?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>157505</bug_id>
          
          <creation_ts>2016-05-09 22:42:20 -0700</creation_ts>
          <short_desc>Get rid of a lot of calls to RefPtr::release()</short_desc>
          <delta_ts>2016-05-19 04:10:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>157887</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1191454</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-09 22:42:20 -0700</bug_when>
    <thetext>Get rid of a lot of calls to RefPtr::release() and use WTFMove() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191530</commentid>
    <comment_count>1</comment_count>
      <attachid>278497</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-10 08:57:56 -0700</bug_when>
    <thetext>Created attachment 278497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191532</commentid>
    <comment_count>2</comment_count>
      <attachid>278499</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-10 09:17:25 -0700</bug_when>
    <thetext>Created attachment 278499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191566</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-10 10:22:23 -0700</bug_when>
    <thetext>Committed r200626: &lt;http://trac.webkit.org/changeset/200626&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278497</attachid>
            <date>2016-05-10 08:57:56 -0700</date>
            <delta_ts>2016-05-10 09:17:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157505-20160510085844.patch</filename>
            <type>text/plain</type>
            <size>157317</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExY2ExNDBiNDBhOGQ5YTcwODRlZTM1
N2QwOGJkNDg1Y2U0NTM2ZGUuLmQwNjNjZWRlMGRjYWMxMWMyNDJmMWY3MGZmNzJkNGUzYjU1MGE5
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDUtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIGEgbG90IG9mIGNhbGxzIHRvIFJlZlB0
cjo6cmVsZWFzZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTc1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHZXQgcmlkIG9mIGEgbG90IG9mIGNhbGxzIHRvIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCB1
c2UgV1RGTW92ZSgpIGluc3RlYWQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmdJ
bXBsLmNwcDoKKyAgICAgICAgKFdURjo6SGFzaEFuZFVURjhDaGFyYWN0ZXJzVHJhbnNsYXRvcjo6
dHJhbnNsYXRlKToKKyAgICAgICAgKiB3dGYvdGV4dC9DU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6Q1N0cmluZzo6Y29weUJ1ZmZlcklmTmVlZGVkKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YWxsb2NhdGVCdWZm
ZXIpOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphbGxvY2F0ZUJ1ZmZlclVwQ29udmVy
dCk6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OnNocmlua1RvRml0KToKKyAgICAgICAg
KiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmFwcGVuZCk6
CisgICAgICAgIChXVEY6OlN0cmluZzo6aW5zZXJ0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpy
ZW1vdmVJbnRlcm5hbCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAg
IChXVEY6OlN0cmluZzo6U3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV1RGOjpTdHJpbmc6OnJlbGVhc2VJbXBsKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nOjppc051bGwpOiBEZWxldGVkLgorCiAyMDE2LTA1LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW0NPQ09BXSBEaXNhYmxlIEhBVkVfRFRSQUNFIGF0IGJ1
aWxkIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNGUxZTI5YzRlOTZmNGE3MTU2MTg2NWRkMzcyNmVjMjFm
NmJmNTRmLi5mYmU1ZjFlMjcxNTAxMTZmYjMwNmZiZjljMTRmZjdjOWJiNDE0NTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjE0IEBACisyMDE2LTA1LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBhIGxvdCBvZiBjYWxscyB0byBSZWZQdHI6
OnJlbGVhc2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU3NTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgR2V0IHJpZCBvZiBhIGxvdCBvZiBjYWxscyB0byBSZWZQdHI6OnJlbGVhc2UoKSBhbmQgdXNl
IFdURk1vdmUoKSBpbnN0ZWFkLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjph
ZGRLZXlUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3Ip
OgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlR2VvcG9zaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3dJbmRleGVkRGF0YWJhc2U6OmRpc2Nvbm5lY3RGcmFtZUZvckRvY3VtZW50U3VzcGVuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OnJlY29ubmVj
dEZyYW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmNyZWF0ZU11bHRpRW50cnlB
cnJheSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
TGlzdDo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL0RP
TVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Tm90
aWZpY2F0aW9uczo6ZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OnJlY29ubmVjdEZyYW1lRnJvbURv
Y3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0
YWJhc2VCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6OnVud3JhcCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0SlNCbG9iKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9uT3B0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWxsTWVz
c2FnZVBvcnRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3Fs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRn
ZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIp
OgorICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTmluZVBp
ZWNlSW1hZ2VSZXBlYXQpOgorICAgICAgICAoV2ViQ29yZTo6Y291bnRlclRvQ1NTVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6
CisgICAgICAgICogY3NzL0NTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQpOgor
ICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAgICogY3Nz
L0NTU05hbWVkSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NOYW1lZEltYWdl
VmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlRmlsbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmlt
YXRpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlSW5zZXRS
b3VuZGVkQ29ybmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQYXJzZUNvbnRleHQ6OmNv
bW1pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2hhZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlU2xpY2VQYXJzZUNvbnRleHQ6OmNvbW1pdE51
bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJJbWFnZVF1YWRQYXJzZUNvbnRleHQ6OmNv
bW1pdE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQm9yZGVyUmFk
aXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb3VudGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lYXJHcmFkaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCdWlsdGluRmlsdGVyQXJndW1lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUZXh0SW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cG9wUnVsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpt
YXJrUnVsZUhlYWRlclN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRl
Vmlld3BvcnRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3Nz
L0NTU1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJWYWx1ZTo6
Y3JlYXRlQ1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlz
dDo6Y29weSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5oOgorICAgICAgICAqIGNzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3ZnUHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2FjaGVkT3JQZW5kaW5n
RnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGlu
Z0Zyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjdXJzb3JPclBl
bmRpbmdGcm9tVmFsdWUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAg
ICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpj
cmVhdGVDU1NPTVdyYXBwZXIpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAg
KiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpjcmVhdGUpOgorICAgICAg
ICAqIGRvbS9BdHRyLmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTm9kZXNMYXp5U25hcHNob3Q6Om5leHROb2RlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEZvY3VzZWRF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0YWtlRE9NV2luZG93RnJvbSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZSk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGV0
YWNoQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5v
ZGVOUyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVBdHRyKToKKyAgICAgICAg
KiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyk6CisgICAgICAgICogZG9tL05vZGVJdGVy
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6Om5leHROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjo6cHJldmlvdXNOb2RlKToKKyAgICAgICAgKiBk
b20vUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnByb2Nlc3NDb250ZW50c0Jl
dHdlZW5PZmZzZXRzKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpyZWJ1aWxkUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6Y3JlYXRlQmxvY2tFbGVt
ZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oOgorICAg
ICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVGb250U3R5bGVDaGFuZ2UpOgorICAgICAg
ICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBlbmRCbG9ja1BsYWNlaG9sZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnRCbG9ja1BsYWNl
aG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjphZGRCbG9j
a1BsYWNlaG9sZGVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENv
bW1hbmQ6Omluc2VydE5ld0RlZmF1bHRQYXJhZ3JhcGhFbGVtZW50QXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhDb250ZW50c1RvTmV3Qmxv
Y2tJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6
Y2xvbmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjp3cmFwcGluZ1N0eWxlRm9yU2VyaWFsaXph
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RQcm9wZXJ0aWVzTm90SW4pOgorICAgICAgICAo
V2ViQ29yZTo6YmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZ1N0eWxlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjppbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsT3JkZXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZmluZFN0cmluZ0FuZFNjcm9sbFRvVmlzaWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdlT2ZTdHJpbmcpOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFyYXRv
ckNvbW1hbmQ6OmNsb25lSGllcmFyY2h5VW5kZXJOZXdCbG9jayk6CisgICAgICAgICogZWRpdGlu
Zy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9N
ZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXJn
ZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5n
L01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6
SW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjppbmNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbCk6CisgICAgICAgICogZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaDoKKyAg
ICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW92ZU5vZGVDb21tYW5kOjpkb1VuYXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvUmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKToKKyAgICAg
ICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0RpY3Rp
b25hcnlMb29rdXAubW06CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUF0SGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpmaW5pc2hSZXF1ZXN0QXV0b2NvbXBs
ZXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlDaGFuZ2VkRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldENvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICog
aHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpnZXRDdWVB
c0hUTUwpOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpjcmVhdGVDdWVSZW5kZXJpbmdUcmVl
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2sv
V2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50OjpjcmVh
dGVFcXVpdmFsZW50SFRNTEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRURWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRyZWVCdWlsZGVyOjpidWlsZEZyb21TdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjcmVhdGVEb2N1bWVudEZyYWdtZW50RnJvbUN1ZVRleHQp
OgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmg6CisKIDIwMTYtMDUtMDkgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBOb3RpZmljYXRp
b24gY29uc3RydWN0b3IgdG8gdGFrZSBhbiBJREwgZGljdGlvbmFyeSBpbnN0ZWFkIG9mIGEgV2Vi
Q29yZTo6RGljdGlvbmFyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAK
aW5kZXggZmY0Y2YyMzFhZDY2NmQ1MzU2YTAzMGU5YzA0Y2U0ZjczYTU3MTdkZi4uOTA5NTMzYzk5
MDhmZTYwMGQxZThiOWU3MDNiY2Q4ZTM0ODM5OTI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZ0ltcGwuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEhhc2hBbmRVVEY4
Q2hhcmFjdGVyc1RyYW5zbGF0b3IgewogICAgICAgICBpZiAoaXNBbGxBU0NJSSkKICAgICAgICAg
ICAgIG5ld1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZShidWZmZXIuY2hhcmFjdGVycywgYnVm
ZmVyLmxlbmd0aCk7CiAKLSAgICAgICAgbG9jYXRpb24gPSBuZXdTdHJpbmcucmVsZWFzZSgpLmxl
YWtSZWYoKTsKKyAgICAgICAgbG9jYXRpb24gPSBuZXdTdHJpbmcubGVha1JlZigpOwogICAgICAg
ICBsb2NhdGlvbi0+c2V0SGFzaChoYXNoKTsKICAgICAgICAgbG9jYXRpb24tPnNldElzQXRvbWlj
KHRydWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwCmluZGV4IDAwMzMzMTgxNjJhMjUz
Zjg0MDQ3MmE5NGU4YWFhYmJjY2NhMmExMGYuLmQxZjE4NmI0YWYyNGIyMDVjNmU2YTliYWY4ZjFi
ODBkYzdkNmQ0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIENTdHJpbmc6OmNvcHlCdWZmZXJJZk5lZWRlZCgpCiAgICAgaWYgKCFtX2J1ZmZlciB8fCBt
X2J1ZmZlci0+aGFzT25lUmVmKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxDU3Ry
aW5nQnVmZmVyPiBidWZmZXIgPSBtX2J1ZmZlci5yZWxlYXNlKCk7CisgICAgUmVmUHRyPENTdHJp
bmdCdWZmZXI+IGJ1ZmZlciA9IFdURk1vdmUobV9idWZmZXIpOwogICAgIHNpemVfdCBsZW5ndGgg
PSBidWZmZXItPmxlbmd0aCgpOwogICAgIG1fYnVmZmVyID0gQ1N0cmluZ0J1ZmZlcjo6Y3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgpOwogICAgIG1lbWNweShtX2J1ZmZlci0+bXV0YWJsZURhdGEo
KSwgYnVmZmVyLT5kYXRhKCksIGxlbmd0aCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5jcHAKaW5kZXggODFjM2E4OGYyZjg4MTdjYjVhYzU0OWZmY2VlZGE2NmU5NmMzZGVmMi4u
NDZjMTliZjZmYjA4ZmQ1NDM5MmQwNmM2YzhiYzc2ODRmNmI0MDRjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCkBAIC05NywxMSArOTcsMTEgQEAgdm9pZCBTdHJpbmdCdWls
ZGVyOjphbGxvY2F0ZUJ1ZmZlcihjb25zdCBMQ2hhciogY3VycmVudENoYXJhY3RlcnMsIHVuc2ln
bmVkIHJlcXUKIHsKICAgICBBU1NFUlQobV9pczhCaXQpOwogICAgIC8vIENvcHkgdGhlIGV4aXN0
aW5nIGRhdGEgaW50byBhIG5ldyBidWZmZXIsIHNldCByZXN1bHQgdG8gcG9pbnQgdG8gdGhlIGVu
ZCBvZiB0aGUgZXhpc3RpbmcgZGF0YS4KLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gYnVmZmVyID0g
U3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChyZXF1aXJlZExlbmd0aCwgbV9idWZmZXJD
aGFyYWN0ZXJzOCk7CisgICAgYXV0byBidWZmZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRp
YWxpemVkKHJlcXVpcmVkTGVuZ3RoLCBtX2J1ZmZlckNoYXJhY3RlcnM4KTsKICAgICBtZW1jcHko
bV9idWZmZXJDaGFyYWN0ZXJzOCwgY3VycmVudENoYXJhY3RlcnMsIHN0YXRpY19jYXN0PHNpemVf
dD4obV9sZW5ndGgpICogc2l6ZW9mKExDaGFyKSk7IC8vIFRoaXMgY2FuJ3Qgb3ZlcmZsb3cuCiAg
ICAgCiAgICAgLy8gVXBkYXRlIHRoZSBidWlsZGVyIHN0YXRlLgotICAgIG1fYnVmZmVyID0gYnVm
ZmVyLnJlbGVhc2UoKTsKKyAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBtX3N0
cmluZyA9IFN0cmluZygpOwogfQogCkBAIC0xMTEsMTEgKzExMSwxMSBAQCB2b2lkIFN0cmluZ0J1
aWxkZXI6OmFsbG9jYXRlQnVmZmVyKGNvbnN0IFVDaGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5z
aWduZWQgcmVxdQogewogICAgIEFTU0VSVCghbV9pczhCaXQpOwogICAgIC8vIENvcHkgdGhlIGV4
aXN0aW5nIGRhdGEgaW50byBhIG5ldyBidWZmZXIsIHNldCByZXN1bHQgdG8gcG9pbnQgdG8gdGhl
IGVuZCBvZiB0aGUgZXhpc3RpbmcgZGF0YS4KLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gYnVmZmVy
ID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChyZXF1aXJlZExlbmd0aCwgbV9idWZm
ZXJDaGFyYWN0ZXJzMTYpOworICAgIGF1dG8gYnVmZmVyID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
bml0aWFsaXplZChyZXF1aXJlZExlbmd0aCwgbV9idWZmZXJDaGFyYWN0ZXJzMTYpOwogICAgIG1l
bWNweShtX2J1ZmZlckNoYXJhY3RlcnMxNiwgY3VycmVudENoYXJhY3RlcnMsIHN0YXRpY19jYXN0
PHNpemVfdD4obV9sZW5ndGgpICogc2l6ZW9mKFVDaGFyKSk7IC8vIFRoaXMgY2FuJ3Qgb3ZlcmZs
b3cuCiAgICAgCiAgICAgLy8gVXBkYXRlIHRoZSBidWlsZGVyIHN0YXRlLgotICAgIG1fYnVmZmVy
ID0gYnVmZmVyLnJlbGVhc2UoKTsKKyAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAg
ICBtX3N0cmluZyA9IFN0cmluZygpOwogfQogCkBAIC0xMjUsMTQgKzEyNSwxNCBAQCB2b2lkIFN0
cmluZ0J1aWxkZXI6OmFsbG9jYXRlQnVmZmVyVXBDb252ZXJ0KGNvbnN0IExDaGFyKiBjdXJyZW50
Q2hhcmFjdGVycywgdW5zaQogewogICAgIEFTU0VSVChtX2lzOEJpdCk7CiAgICAgLy8gQ29weSB0
aGUgZXhpc3RpbmcgZGF0YSBpbnRvIGEgbmV3IGJ1ZmZlciwgc2V0IHJlc3VsdCB0byBwb2ludCB0
byB0aGUgZW5kIG9mIHRoZSBleGlzdGluZyBkYXRhLgotICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBi
dWZmZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHJlcXVpcmVkTGVuZ3RoLCBt
X2J1ZmZlckNoYXJhY3RlcnMxNik7CisgICAgYXV0byBidWZmZXIgPSBTdHJpbmdJbXBsOjpjcmVh
dGVVbmluaXRpYWxpemVkKHJlcXVpcmVkTGVuZ3RoLCBtX2J1ZmZlckNoYXJhY3RlcnMxNik7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpCiAgICAgICAgIG1fYnVm
ZmVyQ2hhcmFjdGVyczE2W2ldID0gY3VycmVudENoYXJhY3RlcnNbaV07CiAgICAgCiAgICAgbV9p
czhCaXQgPSBmYWxzZTsKICAgICAKICAgICAvLyBVcGRhdGUgdGhlIGJ1aWxkZXIgc3RhdGUuCi0g
ICAgbV9idWZmZXIgPSBidWZmZXIucmVsZWFzZSgpOworICAgIG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOwogICAgIG1fc3RyaW5nID0gU3RyaW5nKCk7CiB9CiAKQEAgLTM1Nyw3ICszNTcsNyBA
QCB2b2lkIFN0cmluZ0J1aWxkZXI6OnNocmlua1RvRml0KCkKICAgICAgICAgICAgIHJlYWxsb2Nh
dGVCdWZmZXI8TENoYXI+KG1fbGVuZ3RoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVh
bGxvY2F0ZUJ1ZmZlcjxVQ2hhcj4obV9sZW5ndGgpOwotICAgICAgICBtX3N0cmluZyA9IG1fYnVm
ZmVyLnJlbGVhc2UoKTsKKyAgICAgICAgbV9zdHJpbmcgPSBXVEZNb3ZlKG1fYnVmZmVyKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCA3OTkxZjQ3MGZhMTcwNzBh
MWEyZjQ3OWQwZjI2N2I1NTlmMjUxZWM2Li5mMzFhYWM3NmMyNDg4MDRhNzNlNWY0MDM5NzlkOTRm
M2I4OTBhMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC0xMDAsMTkgKzEwMCwx
OSBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQogICAgICAgICAgICAg
ICAgIExDaGFyKiBkYXRhOwogICAgICAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoKCkgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBtX2ltcGwtPmxlbmd0aCgpKQogICAg
ICAgICAgICAgICAgICAgICBDUkFTSCgpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxTdHJpbmdJ
bXBsPiBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2ltcGwtPmxl
bmd0aCgpICsgc3RyLmxlbmd0aCgpLCBkYXRhKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5ld0lt
cGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVuZ3RoKCkgKyBz
dHIubGVuZ3RoKCksIGRhdGEpOwogICAgICAgICAgICAgICAgIG1lbWNweShkYXRhLCBtX2ltcGwt
PmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsKICAgICAg
ICAgICAgICAgICBtZW1jcHkoZGF0YSArIG1faW1wbC0+bGVuZ3RoKCksIHN0ci5jaGFyYWN0ZXJz
OCgpLCBzdHIubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsKLSAgICAgICAgICAgICAgICBtX2lt
cGwgPSBuZXdJbXBsLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtX2ltcGwgPSBXVEZNb3Zl
KG5ld0ltcGwpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIFVDaGFyKiBkYXRhOwogICAgICAgICAgICAgaWYgKHN0ci5sZW5ndGgoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIG1faW1wbC0+bGVuZ3RoKCkpCiAgICAg
ICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdJ
bXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2ltcGwtPmxlbmd0aCgpICsg
c3RyLmxlbmd0aCgpLCBkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0lt
cGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIHN0ci5sZW5ndGgoKSwg
ZGF0YSk7CiAgICAgICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEpOwogICAgICAgICAgICAgU3RyaW5nVmlldyhzdHIpLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBtX2ltcGwtPmxlbmd0aCgpKTsKLSAgICAgICAgICAgIG1f
aW1wbCA9IG5ld0ltcGwucmVsZWFzZSgpOworICAgICAgICAgICAgbV9pbXBsID0gV1RGTW92ZShu
ZXdJbXBsKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2ltcGwgPSBzdHIubV9pbXBs
OwogICAgIH0KQEAgLTEzMywxMCArMTMzLDEwIEBAIHZvaWQgU3RyaW5nOjphcHBlbmQoTENoYXIg
Y2hhcmFjdGVyKQogICAgIGlmIChtX2ltcGwtPmxlbmd0aCgpID49IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgQ1JBU0goKTsKICAgICBMQ2hhciogZGF0YTsK
LSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIDEsIGRhdGEpOworICAgIGF1dG8gbmV3SW1wbCA9
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIDEsIGRh
dGEpOwogICAgIG1lbWNweShkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVu
Z3RoKCkpOwogICAgIGRhdGFbbV9pbXBsLT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7Ci0gICAgbV9p
bXBsID0gbmV3SW1wbC5yZWxlYXNlKCk7CisgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsK
IH0KIAogdm9pZCBTdHJpbmc6OmFwcGVuZChVQ2hhciBjaGFyYWN0ZXIpCkBAIC0xNTQsMTAgKzE1
NCwxMCBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKFVDaGFyIGNoYXJhY3RlcikKICAgICBpZiAobV9p
bXBsLT5sZW5ndGgoKSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgICAgIENSQVNIKCk7CiAgICAgVUNoYXIqIGRhdGE7Ci0gICAgUmVmUHRyPFN0cmluZ0ltcGw+
IG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVuZ3Ro
KCkgKyAxLCBkYXRhKTsKKyAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkKG1faW1wbC0+bGVuZ3RoKCkgKyAxLCBkYXRhKTsKICAgICBTdHJpbmdWaWV3KCpt
X2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOwogICAgIGRhdGFbbV9pbXBs
LT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7Ci0gICAgbV9pbXBsID0gbmV3SW1wbC5yZWxlYXNlKCk7
CisgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKIH0KIAogaW50IGNvZGVQb2ludENvbXBh
cmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCkBAIC0xODcsMjEgKzE4NywyMSBA
QCB2b2lkIFN0cmluZzo6aW5zZXJ0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBwb3Np
dGlvbikKICAgICBpZiAobGVuZ3RoVG9JbnNlcnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkgLSBsZW5ndGgoKSkKICAgICAgICAgQ1JBU0goKTsKIAotICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiBuZXdTdHJpbmc7CiAgICAgaWYgKGlzOEJpdCgpICYmIHN0cmluZy5pczhCaXQo
KSkgewogICAgICAgICBMQ2hhciogZGF0YTsKLSAgICAgICAgbmV3U3RyaW5nID0gU3RyaW5nSW1w
bDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgoKSArIGxlbmd0aFRvSW5zZXJ0LCBkYXRhKTsK
KyAgICAgICAgYXV0byBuZXdTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVk
KGxlbmd0aCgpICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwogICAgICAgICBTdHJpbmdWaWV3KCpt
X2ltcGwpLnN1YnN0cmluZygwLCBwb3NpdGlvbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQo
ZGF0YSk7CiAgICAgICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydChkYXRhICsgcG9zaXRpb24pOwogICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLnN1YnN0
cmluZyhwb3NpdGlvbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9u
ICsgbGVuZ3RoVG9JbnNlcnQpOworICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld1N0cmluZyk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUNoYXIqIGRhdGE7Ci0gICAgICAgIG5ld1N0cmluZyA9
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCkgKyBsZW5ndGhUb0luc2Vy
dCwgZGF0YSk7CisgICAgICAgIGF1dG8gbmV3U3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
bml0aWFsaXplZChsZW5ndGgoKSArIGxlbmd0aFRvSW5zZXJ0LCBkYXRhKTsKICAgICAgICAgU3Ry
aW5nVmlldygqbV9pbXBsKS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEpOwogICAgICAgICBTdHJpbmdWaWV3KHN0cmluZykuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9uKTsKICAgICAgICAgU3RyaW5nVmlldygqbV9p
bXBsKS5zdWJzdHJpbmcocG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEg
KyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0KTsKKyAgICAgICAgbV9pbXBsID0gV1RGTW92ZShu
ZXdTdHJpbmcpOwogICAgIH0KLSAgICBtX2ltcGwgPSBuZXdTdHJpbmcucmVsZWFzZSgpOwogfQog
CiB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVu
c2lnbmVkIGxlbmd0aFRvQXBwZW5kKQpAQCAtMjI2LDIwICsyMjYsMjAgQEAgdm9pZCBTdHJpbmc6
OmFwcGVuZChjb25zdCBMQ2hhciogY2hhcmFjdGVyc1RvQXBwZW5kLCB1bnNpZ25lZCBsZW5ndGhU
b0FwcGVuZCkKICAgICAgICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpIC0gc3RyTGVuZ3RoKQogICAgICAgICAgICAgQ1JBU0goKTsKICAg
ICAgICAgTENoYXIqIGRhdGE7Ci0gICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdJbXBsID0g
U3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChzdHJMZW5ndGggKyBsZW5ndGhUb0FwcGVu
ZCwgZGF0YSk7CisgICAgICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoc3RyTGVuZ3RoICsgbGVuZ3RoVG9BcHBlbmQsIGRhdGEpOwogICAgICAgICBTdHJp
bmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBzdHJMZW5ndGgp
OwogICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSArIHN0ckxlbmd0aCwgY2hhcmFj
dGVyc1RvQXBwZW5kLCBsZW5ndGhUb0FwcGVuZCk7Ci0gICAgICAgIG1faW1wbCA9IG5ld0ltcGwu
cmVsZWFzZSgpOworICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpIC0gc3RyTGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwogICAg
IFVDaGFyKiBkYXRhOwotICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdJbXBsID0gU3RyaW5nSW1w
bDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgoKSArIGxlbmd0aFRvQXBwZW5kLCBkYXRhKTsK
KyAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCgpICsgbGVuZ3RoVG9BcHBlbmQsIGRhdGEpOwogICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhk
YXRhLCBtX2ltcGwtPmNoYXJhY3RlcnMxNigpLCBzdHJMZW5ndGgpOwogICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFycyhkYXRhICsgc3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0aFRv
QXBwZW5kKTsKLSAgICBtX2ltcGwgPSBuZXdJbXBsLnJlbGVhc2UoKTsKKyAgICBtX2ltcGwgPSBX
VEZNb3ZlKG5ld0ltcGwpOwogfQogCiB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0aFRvQXBwZW5kKQpAQCAtMjYyLDEzICsy
NjIsMTMgQEAgdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBVQ2hhciogY2hhcmFjdGVyc1RvQXBw
ZW5kLCB1bnNpZ25lZCBsZW5ndGhUb0FwcGVuZCkKICAgICBpZiAobGVuZ3RoVG9BcHBlbmQgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzdHJMZW5ndGgpCiAgICAgICAg
IENSQVNIKCk7CiAgICAgVUNoYXIqIGRhdGE7Ci0gICAgUmVmUHRyPFN0cmluZ0ltcGw+IG5ld0lt
cGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHN0ckxlbmd0aCArIGxlbmd0aFRv
QXBwZW5kLCBkYXRhKTsKKyAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkKHN0ckxlbmd0aCArIGxlbmd0aFRvQXBwZW5kLCBkYXRhKTsKICAgICBpZiAobV9p
bXBsLT5pczhCaXQoKSkKICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEsIGNoYXJh
Y3RlcnM4KCksIHN0ckxlbmd0aCk7CiAgICAgZWxzZQogICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcnMoZGF0YSwgY2hhcmFjdGVyczE2KCksIHN0ckxlbmd0aCk7CiAgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJzKGRhdGEgKyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9B
cHBlbmQpOwotICAgIG1faW1wbCA9IG5ld0ltcGwucmVsZWFzZSgpOworICAgIG1faW1wbCA9IFdU
Rk1vdmUobmV3SW1wbCk7CiB9CiAKIApAQCAtMjg5LDEyICsyODksMTIgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+CiBpbmxpbmUgdm9pZCBTdHJpbmc6OnJlbW92ZUludGVybmFs
KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHBvc2l0aW9uLCBpbnQg
bGVuZ3RoVG9SZW1vdmUpCiB7CiAgICAgQ2hhcmFjdGVyVHlwZSogZGF0YTsKLSAgICBSZWZQdHI8
U3RyaW5nSW1wbD4gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVu
Z3RoKCkgLSBsZW5ndGhUb1JlbW92ZSwgZGF0YSk7CisgICAgYXV0byBuZXdJbXBsID0gU3RyaW5n
SW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgoKSAtIGxlbmd0aFRvUmVtb3ZlLCBkYXRh
KTsKICAgICBtZW1jcHkoZGF0YSwgY2hhcmFjdGVycywgcG9zaXRpb24gKiBzaXplb2YoQ2hhcmFj
dGVyVHlwZSkpOwogICAgIG1lbWNweShkYXRhICsgcG9zaXRpb24sIGNoYXJhY3RlcnMgKyBwb3Np
dGlvbiArIGxlbmd0aFRvUmVtb3ZlLAogICAgICAgICAobGVuZ3RoKCkgLSBsZW5ndGhUb1JlbW92
ZSAtIHBvc2l0aW9uKSAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7CiAKLSAgICBtX2ltcGwgPSBu
ZXdJbXBsLnJlbGVhc2UoKTsKKyAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogfQogCiB2
b2lkIFN0cmluZzo6cmVtb3ZlKHVuc2lnbmVkIHBvc2l0aW9uLCBpbnQgbGVuZ3RoVG9SZW1vdmUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCAxYzQzZGUwYWY0ZmQzZDY0ZmIzYjEwMGU0Y2Ex
MmZhOTIyOWMzOTcwLi5lZjYyMWZjNDEzMzQ5ZTY5NmQ3NWFmZmE3Mzk4YmIwMTM1NjA5YjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTEyNSwxMCArMTI1LDE0IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFdlIGhhdmUgdG8gZGVjbGFyZSB0aGUgY29weSBjb25zdHJ1Y3RvciBhbmQgY29weSBh
c3NpZ25tZW50IG9wZXJhdG9yIGFzIHdlbGwsIG90aGVyd2lzZQogICAgIC8vIHRoZXknbGwgYmUg
aW1wbGljaXRseSBkZWxldGVkIGJ5IGFkZGluZyB0aGUgbW92ZSBjb25zdHJ1Y3RvciBhbmQgbW92
ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIFN0cmluZyhjb25zdCBTdHJpbmcmIG90aGVyKSA6
IG1faW1wbChvdGhlci5tX2ltcGwpIHsgfQotICAgIFN0cmluZyhTdHJpbmcmJiBvdGhlcikgOiBt
X2ltcGwob3RoZXIubV9pbXBsLnJlbGVhc2UoKSkgeyB9CisgICAgU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgb3RoZXIpCisgICAgICAgIDogbV9pbXBsKG90aGVyLm1faW1wbCkKKyAgICB7IH0KKyAgICBT
dHJpbmcoU3RyaW5nJiYgb3RoZXIpCisgICAgICAgIDogbV9pbXBsKFdURk1vdmUob3RoZXIubV9p
bXBsKSkKKyAgICB7IH0KICAgICBTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmIG90aGVy
KSB7IG1faW1wbCA9IG90aGVyLm1faW1wbDsgcmV0dXJuICp0aGlzOyB9Ci0gICAgU3RyaW5nJiBv
cGVyYXRvcj0oU3RyaW5nJiYgb3RoZXIpIHsgbV9pbXBsID0gb3RoZXIubV9pbXBsLnJlbGVhc2Uo
KTsgcmV0dXJuICp0aGlzOyB9CisgICAgU3RyaW5nJiBvcGVyYXRvcj0oU3RyaW5nJiYgb3RoZXIp
IHsgbV9pbXBsID0gV1RGTW92ZShvdGhlci5tX2ltcGwpOyByZXR1cm4gKnRoaXM7IH0KIAogICAg
IC8vIElubGluZSB0aGUgZGVzdHJ1Y3Rvci4KICAgICBBTFdBWVNfSU5MSU5FIH5TdHJpbmcoKSB7
IH0KQEAgLTE0NCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gIW1faW1wbCB8fCAhbV9pbXBsLT5sZW5ndGgoKTsgfQogCiAgICAgU3RyaW5nSW1w
bCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5nZXQoKTsgfQotICAgIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gcmVsZWFzZUltcGwoKSB7IHJldHVybiBtX2ltcGwucmVsZWFzZSgpOyB9Cisg
ICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlbGVhc2VJbXBsKCkgeyByZXR1cm4gV1RGTW92ZShtX2lt
cGwpOyB9CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmNwcAppbmRleCA5MWFjMGJjMWE0NjM0YTVmNGFiNjIxZjM2Y2JjYjdjNjQ1ZDUwMmZjLi5lMTdk
NzM3NTk0ODM2MjY2ZTAxZTJiZGM2NjBiZjk3YWY0OGE2ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3Bw
CkBAIC0xODYsOSArMTg2LDkgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmly
ZWQoKQogCiAgICAgICAgIC8vIDIuNy4gSWYgZGlkIHN0b3JlIGtleSBpcyB0cnVlLCBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXlhZGRlZCBhdCB0aGUgTWVkaWFL
ZXlTZXNzaW9uIG9iamVjdC4KICAgICAgICAgaWYgKGRpZFN0b3JlS2V5KSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8RXZlbnQ+IGtleWFkZGVkRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS53ZWJraXRrZXlhZGRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgYXV0byBr
ZXlhZGRlZEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5YWRkZWRF
dmVudCwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgICAgIGtleWFkZGVkRXZlbnQtPnNldFRhcmdl
dCh0aGlzKTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChrZXlh
ZGRlZEV2ZW50LnJlbGVhc2UoKSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShrZXlhZGRlZEV2ZW50KSk7CiAKICAgICAgICAgICAgIGtleXMoKS0+
a2V5QWRkZWQoKTsKICAgICAgICAgfQpAQCAtMjA5LDkgKzIwOSw5IEBAIHZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjphZGRLZXlUaW1lckZpcmVkKCkKIAogdm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRN
ZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKIHsKLSAg
ICBSZWZQdHI8TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVkaWFLZXlNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5bWVzc2FnZUV2ZW50LCBtZXNzYWdlLCBk
ZXN0aW5hdGlvblVSTCk7CisgICAgYXV0byBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VFdmVudCwgbWVzc2FnZSwgZGVzdGlu
YXRpb25VUkwpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9hc3luY0V2ZW50
UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0V2ZW50UXVl
dWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogdm9pZCBNZWRpYUtleVNlc3Np
b246OnNlbmRFcnJvcihDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSBlcnJvckNv
ZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpCkBAIC0yMTksOSArMjE5LDkgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnNlbmRFcnJvcihDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSBl
cnJvckNvZGUsIHUKICAgICBSZWY8TWVkaWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtleUVycm9y
OjpjcmVhdGUoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKS5nZXQoKTsKICAgICBzZXRFcnJvcihlcnJv
ci5wdHIoKSk7CiAKLSAgICBSZWZQdHI8RXZlbnQ+IGtleWVycm9yRXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAg
IGF1dG8ga2V5ZXJyb3JFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtl
eWVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAga2V5ZXJyb3JFdmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChrZXllcnJvckV2ZW50
LnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUo
a2V5ZXJyb3JFdmVudCkpOwogfQogCiBTdHJpbmcgTWVkaWFLZXlTZXNzaW9uOjptZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggZmIxMjExY2VhYjZkZmRlZjc0NzI1N2Jk
NmI3ODZhMzFmZGViOGI1Ni4uNzYzZDYwNTkxYjFiZmQwZjE3YjQwZGZmOGYzMzc0MzI1MjFkYzJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbi5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIFJlZlB0cjxHZW9wb3NpdGlvbj4gY3Jl
YXRlR2VvcG9zaXRpb24oR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiAgICAgUmVmUHRy
PENvb3JkaW5hdGVzPiBjb29yZGluYXRlcyA9IENvb3JkaW5hdGVzOjpjcmVhdGUocG9zaXRpb24t
PmxhdGl0dWRlKCksIHBvc2l0aW9uLT5sb25naXR1ZGUoKSwgcG9zaXRpb24tPmNhblByb3ZpZGVB
bHRpdHVkZSgpLCBwb3NpdGlvbi0+YWx0aXR1ZGUoKSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24tPmFjY3VyYWN5KCks
IHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSgpLCBwb3NpdGlvbi0+YWx0aXR1
ZGVBY2N1cmFjeSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGluZygpLCBwb3NpdGlvbi0+
aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVkKCksIHBvc2l0aW9uLT5zcGVlZCgp
KTsKLSAgICByZXR1cm4gR2VvcG9zaXRpb246OmNyZWF0ZShjb29yZGluYXRlcy5yZWxlYXNlKCks
IGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAocG9zaXRpb24tPnRpbWVzdGFtcCgpKSk7Cisg
ICAgcmV0dXJuIEdlb3Bvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb29yZGluYXRlcyksIGNvbnZl
cnRTZWNvbmRzVG9ET01UaW1lU3RhbXAocG9zaXRpb24tPnRpbWVzdGFtcCgpKSk7CiB9CiAKIHN0
YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3JlYXRlUG9zaXRpb25FcnJvcihHZW9sb2NhdGlvbkVy
cm9yKiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGNlNWY1MDBmZTFiMjY4
OTg5NGUxNzExZGY4MWE2MzNmYjAwMWEyYjkuLjk4NzBhOGZmOWY2M2E1OTA1NGNkODgxODk3ZWI5
YzAzZjU5NmMzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNjUsMTQgKzY1LDE0
IEBAIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpm
cm9tKERPTVdpbmRvdyogd2luZG93KQogCiB2b2lkIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6
ZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkKIHsKLSAgICBtX3N1c3BlbmRl
ZElEQkZhY3RvcnkgPSBtX2lkYkZhY3RvcnkucmVsZWFzZSgpOworICAgIG1fc3VzcGVuZGVkSURC
RmFjdG9yeSA9IFdURk1vdmUobV9pZGJGYWN0b3J5KTsKICAgICBET01XaW5kb3dQcm9wZXJ0eTo6
ZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCk7CiB9CiAKIHZvaWQgRE9NV2lu
ZG93SW5kZXhlZERhdGFiYXNlOjpyZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24o
RnJhbWUqIGZyYW1lKQogewogICAgIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZy
b21Eb2N1bWVudFN1c3BlbnNpb24oZnJhbWUpOwotICAgIG1faWRiRmFjdG9yeSA9IG1fc3VzcGVu
ZGVkSURCRmFjdG9yeS5yZWxlYXNlKCk7CisgICAgbV9pZGJGYWN0b3J5ID0gV1RGTW92ZShtX3N1
c3BlbmRlZElEQkZhY3RvcnkpOwogfQogCiB2b2lkIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6
d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5LmgKaW5kZXggOTllMzhiYTQxYzdkYzJhOWVjNjBkNGIwNDA0
ZWVmMzJkMmUzMWJjMS4uNTVlNDI2ZjFkNWY3MjM3MTRmNDE2MzQzMDBjNDdiZTdmNDBmNzBlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJLZXkoS2V5VHlw
ZTo6RGF0ZSwgZGF0ZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4g
Y3JlYXRlTXVsdGlFbnRyeUFycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4mIGFycmF5
KQorICAgIHN0YXRpYyBSZWY8SURCS2V5PiBjcmVhdGVNdWx0aUVudHJ5QXJyYXkoY29uc3QgVmVj
dG9yPFJlZlB0cjxJREJLZXk+PiYgYXJyYXkpCiAgICAgewogICAgICAgICBWZWN0b3I8UmVmUHRy
PElEQktleT4+IHJlc3VsdDsKIApAQCAtODEsOSArODEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgc2l6ZUVzdGltYXRlICs9IGtleS0+bV9zaXplRXN0aW1hdGU7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5ID0gYWRvcHRSZWYobmV3
IElEQktleShyZXN1bHQsIHNpemVFc3RpbWF0ZSkpOworICAgICAgICBSZWY8SURCS2V5PiBpZGJL
ZXkgPSBhZG9wdFJlZigqbmV3IElEQktleShyZXN1bHQsIHNpemVFc3RpbWF0ZSkpOwogICAgICAg
ICBBU1NFUlQoaWRiS2V5LT5pc1ZhbGlkKCkpOwotICAgICAgICByZXR1cm4gaWRiS2V5LnJlbGVh
c2UoKTsKKyAgICAgICAgcmV0dXJuIGlkYktleTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPElE
QktleT4gY3JlYXRlQXJyYXkoY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiYgYXJyYXkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3Bw
CmluZGV4IDQxNDI4NzljNWMzZDE4MDZhNDc0YjZhYTdlYzhhMzk2MTBiZWVlNjkuLmUyODQ5YWVj
ZDM5ODk3MGI2YmFiZDY3MThiNDI4Nzg5MDMxMzZjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC04NjcsMTAgKzg2Nywx
MCBAQCBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4gTWVkaWFTb3VyY2U6OmNyZWF0ZVNvdXJj
ZUJ1ZmZlclByaXZhdGUoY29uc3QgQ29udGVudAogCiB2b2lkIE1lZGlhU291cmNlOjpzY2hlZHVs
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIFJlZlB0cjxFdmVu
dD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBh
dXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSk7CiAgICAg
ZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVF
dmVudChldmVudC5yZWxlYXNlKCkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVu
dChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU291
cmNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCBjYzJkM2I4ZGJj
ZDdmNmUxMGM2OTE0MjYyODQ3NGQyNDFjNmVjMjQwLi45NjIyZjc4YmRhMzExODM2NjIwNjYzMjIx
ZTYyYjIxOWM3MDkzMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC00ODcsMTAgKzQ4NywxMCBAQCBib29sIFNvdXJj
ZUJ1ZmZlcjo6aXNSZW1vdmVkKCkgY29uc3QKIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNjaGVkdWxl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgUmVmUHRyPEV2ZW50
PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgZmFsc2UpOworICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKTsKICAgICBl
dmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2
ZW50KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50
KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlcklu
dGVybmFsKHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyTGlzdC5jcHAKaW5kZXggZjY0YWYyMTk0NGFlMjdhNDUxNWNmNWEyYTNmZDZjYjZl
ODZlMTQ3Zi4uNTViZjM3NDI1YmJmOTYxOWEwZDVhMmUyM2JiNTA3ZWUyMDViNzYxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ckxpc3QuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJMaXN0Ojpzd2Fw
KFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj4mIG90aGVyKQogCiB2b2lkIFNvdXJjZUJ1ZmZl
ckxpc3Q6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0g
ICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwg
ZmFsc2UpOworICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2Us
IGZhbHNlKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50
UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0V2ZW50UXVl
dWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5jcHAKaW5kZXggMGRhNDg5ZDdlNWEyNzc3ZmI4YzFhNzE1MTQyNjNkMjUxZjc1ODNk
My4uNDUyZWY1MTMxMjQzNWE1ZTU1MDRiMjAzNzE1Yzk5OWQwNzZlY2E1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmNwcApAQCAtNzAsMTQgKzcwLDE0IEBAIE5vdGlmaWNhdGlvbkNlbnRl
ciogRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhET01XaW5kb3cm
IHdpbmRvCiAKIHZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZGlzY29ubmVjdEZyYW1lRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkKIHsKLSAgICBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRl
ciA9IG1fbm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKKyAgICBtX3N1c3BlbmRlZE5vdGlm
aWNhdGlvbkNlbnRlciA9IFdURk1vdmUobV9ub3RpZmljYXRpb25DZW50ZXIpOwogICAgIERPTVdp
bmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWVGb3JEb2N1bWVudFN1c3BlbnNpb24oKTsKIH0K
IAogdm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjpyZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVu
dFN1c3BlbnNpb24oRnJhbWUqIGZyYW1lKQogewogICAgIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNv
bm5lY3RGcmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oZnJhbWUpOwotICAgIG1fbm90aWZpY2F0
aW9uQ2VudGVyID0gbV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOworICAg
IG1fbm90aWZpY2F0aW9uQ2VudGVyID0gV1RGTW92ZShtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNl
bnRlcik7CiB9CiAKIHZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RJbkNhY2hlZEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBhNzEzYzZiYzE4Y2M5YmE4
ZWI0MjhiZjQ3YmU0M2ZjOTJmMDMxOTBhLi5hZmM3ODhmMjQzMGEyMzA3NzdmMjgzYjRmMGEzYTE0
ZWY3YmEwM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIHZvaWQg
bG9nT3BlbkRhdGFiYXNlRXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJgogICAgICAgICBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKIH0KIAotUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2VNYW5h
Z2VyOjpvcGVuRGF0YWJhc2VCYWNrZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgYm9vbCBz
ZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYgZXJyb3IsIFN0cmluZyYgZXJy
b3JNZXNzYWdlKQorUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFz
ZUJhY2tlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5ld0Rh
dGFiYXNlLCBEYXRhYmFzZUVycm9yJiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAg
ICAgQVNTRVJUKGVycm9yID09IERhdGFiYXNlRXJyb3I6Ok5vbmUpOwogCkBAIC0yMTcsMTEgKzIx
NywxMSBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFz
ZUJhY2tlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICBjYXNlIERhdGFiYXNlRXJy
b3I6OkRhdGFiYXNlU2l6ZU92ZXJmbG93ZWQ6CiAgICAgICAgIGNhc2UgRGF0YWJhc2VFcnJvcjo6
R2VuZXJpY1NlY3VyaXR5RXJyb3I6CiAgICAgICAgICAgICBsb2dPcGVuRGF0YWJhc2VFcnJvcihj
b250ZXh0LCBuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAgICAgY2FzZSBEYXRhYmFzZUVycm9yOjpJbnZhbGlkRGF0YWJhc2VT
dGF0ZToKICAgICAgICAgICAgIGxvZ0Vycm9yTWVzc2FnZShjb250ZXh0LCBlcnJvck1lc3NhZ2Up
OwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICBjYXNlIERhdGFiYXNlRXJyb3I6OkRhdGFiYXNlU2l6ZUV4Y2VlZGVkUXVvdGE6CiAg
ICAgICAgICAgICAvLyBOb3RpZnkgdGhlIGNsaWVudCB0aGF0IHdlJ3ZlIGV4Y2VlZGVkIHRoZSBk
YXRhYmFzZSBxdW90YS4KQEAgLTI0NSwxNSArMjQ1LDE1IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+
IERhdGFiYXNlTWFuYWdlcjo6b3BlbkRhdGFiYXNlQmFja2VuZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0CiAKICAgICAgICAgICAgIGlmIChlcnJvciA9PSBEYXRhYmFzZUVycm9yOjpJbnZhbGlkRGF0
YWJhc2VTdGF0ZSkgewogICAgICAgICAgICAgICAgIGxvZ0Vycm9yTWVzc2FnZShjb250ZXh0LCBl
cnJvck1lc3NhZ2UpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBsb2dPcGVuRGF0
YWJhc2VFcnJvcihjb250ZXh0LCBuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gYmFj
a2VuZC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJhY2tlbmQ7CiB9CiAKIHZvaWQgRGF0YWJhc2VN
YW5hZ2VyOjphZGRQcm9wb3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UqIHByb3Bvc2VkRGIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuaAppbmRleCBiOGQ2N2FkYjNjNjM2OTMxMDcwZWY3YzQ0YzVhYjdlY2Q5ZThiM2I5Li40
MWNkN2ZlNzVkN2QxY2Q1ZGNhN2E3YTMxZDE3MDY2MzE5MmVkNmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKQEAgLTEy
OCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIC8vIGl0IGFscmVhZHkgZXhpc3QgcHJldmlvdXNs
eS4gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIDAuCiAgICAgUmVmUHRyPERhdGFiYXNlQ29udGV4dD4g
ZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0g
ICAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlQmFja2VuZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVy
c2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiwgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOworICAgIFJlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlQmFja2Vu
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFz
ZUVycm9yJiwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiAgICAgdm9pZCBhZGRQcm9wb3NlZERh
dGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UqKTsKICAgICB2b2lkIHJlbW92ZVByb3Bvc2VkRGF0YWJh
c2UoUHJvcG9zZWREYXRhYmFzZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKaW5kZXggMzJkZDA2YjQxNTg5MGY1
Njg4N2U0NWFjYjBlYWNjZDQzYWVjNWExOC4uY2E2NjU4MTBiYTYwZDE2Y2M3NDFlMThkZTQ1ODZj
ZTg0NzA0OTI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxDYWxsYmFja1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCkBAIC04MSwxMiArODEsMTIgQEAgcHVibGljOgog
ICAgICAgICB9KTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFQ+IHVud3JhcCgpCisgICAgUmVm
UHRyPFQ+IHVud3JhcCgpCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4
KTsKICAgICAgICAgQVNTRVJUKCFtX2NhbGxiYWNrIHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBudWxscHRyOwotICAgICAgICByZXR1cm4gbV9jYWxsYmFjay5yZWxlYXNlKCk7CisgICAgICAg
IHJldHVybiBXVEZNb3ZlKG1fY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8vIFVzZWZ1bCBmb3Ig
b3B0aW1pemF0aW9ucyBvbmx5LCBwbGVhc2UgdGVzdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHVud3Jh
cCB0byBiZSBzdXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGE2ZWVlZjk4YzdjNTVlYmE0MjNiZDg4ZDRh
ZDg2ZmI1NDcwMDYwOTIuLjE1ZTI3YTA5NmYzYmIzNzVhNDI1NTYxZWU5NjU2YzRjODcwYTZjZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogICAgIGZyYW1lLT5vcENv
ZGUgPSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlVGV4dDsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0g
UXVldWVkRnJhbWVUeXBlU3RyaW5nOwogICAgIGZyYW1lLT5zdHJpbmdEYXRhID0gc3RyaW5nOwot
ICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLmFwcGVuZChmcmFtZS5yZWxlYXNlKCkpOworICAgIG1f
b3V0Z29pbmdGcmFtZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGZyYW1lKSk7CiB9CiAKIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BD
b2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKQEAgLTcxMSw3ICs3MTEs
NyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhcgogICAgIGZyYW1lLT52ZWN0b3JEYXRhLnJlc2l6
ZShkYXRhTGVuZ3RoKTsKICAgICBpZiAoZGF0YUxlbmd0aCkKICAgICAgICAgbWVtY3B5KGZyYW1l
LT52ZWN0b3JEYXRhLmRhdGEoKSwgZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgbV9vdXRnb2luZ0Zy
YW1lUXVldWUuYXBwZW5kKGZyYW1lLnJlbGVhc2UoKSk7CisgICAgbV9vdXRnb2luZ0ZyYW1lUXVl
dWUuYXBwZW5kKFdURk1vdmUoZnJhbWUpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpl
bnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBCbG9iJiBibG9i
KQpAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgQmxvYiYgYmxvCiAgICAgZnJhbWUt
Pm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBl
QmxvYjsKICAgICBmcmFtZS0+YmxvYkRhdGEgPSAmYmxvYjsKLSAgICBtX291dGdvaW5nRnJhbWVR
dWV1ZS5hcHBlbmQoZnJhbWUucmVsZWFzZSgpKTsKKyAgICBtX291dGdvaW5nRnJhbWVRdWV1ZS5h
cHBlbmQoV1RGTW92ZShmcmFtZSkpOwogfQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NPdXRnb2luZ0ZyYW1lUXVldWUoKQpAQCAtNzU0LDEyICs3NTQsMTIgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgICAgICAgICBt
X2Jsb2JMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFk
ZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKICAgICAgICAgICAgICAgICBtX2Js
b2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVyU3RhcnRlZDsKICAgICAgICAgICAgICAgICBtX2Js
b2JMb2FkZXItPnN0YXJ0KG1fZG9jdW1lbnQsICpmcmFtZS0+YmxvYkRhdGEpOwotICAgICAgICAg
ICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBlbmQoZnJhbWUucmVsZWFzZSgpKTsKKyAg
ICAgICAgICAgICAgICBtX291dGdvaW5nRnJhbWVRdWV1ZS5wcmVwZW5kKFdURk1vdmUoZnJhbWUp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgQmxvYkxvYWRl
clN0YXJ0ZWQ6CiAgICAgICAgICAgICBjYXNlIEJsb2JMb2FkZXJGYWlsZWQ6Ci0gICAgICAgICAg
ICAgICAgbV9vdXRnb2luZ0ZyYW1lUXVldWUucHJlcGVuZChmcmFtZS5yZWxlYXNlKCkpOworICAg
ICAgICAgICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBlbmQoV1RGTW92ZShmcmFtZSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBCbG9iTG9hZGVy
RmluaXNoZWQ6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxv
YkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3Bw
CmluZGV4IGRkOWI0MWU4ZWRkMjgyZWM5MjFjYTFjYmMzZmEzMWQ2MmU4MzNhNTIuLjUyMmNlOTY5
MjMzNjQ3YjE5Zjc0YWVlZjA0YzA3YjIwY2FmZDAzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcApAQCAtMTE5LDggKzExOSw4IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNCbG9iKEV4ZWNTdGF0ZSogZXhlYykKIAogICAg
ICAgICBpZiAoQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gdG9BcnJheUJ1ZmZlcihpdGVtKSkK
ICAgICAgICAgICAgIGJsb2JCdWlsZGVyLmFwcGVuZChhcnJheUJ1ZmZlcik7Ci0gICAgICAgIGVs
c2UgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRvQXJyYXlC
dWZmZXJWaWV3KGl0ZW0pKQotICAgICAgICAgICAgYmxvYkJ1aWxkZXIuYXBwZW5kKGFycmF5QnVm
ZmVyVmlldy5yZWxlYXNlKCkpOworICAgICAgICBlbHNlIGlmIChhdXRvIGFycmF5QnVmZmVyVmll
dyA9IHRvQXJyYXlCdWZmZXJWaWV3KGl0ZW0pKQorICAgICAgICAgICAgYmxvYkJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgICAgIGVsc2UgaWYgKEJsb2IqIGJs
b2IgPSBKU0Jsb2I6OnRvV3JhcHBlZChpdGVtKSkKICAgICAgICAgICAgIGJsb2JCdWlsZGVyLmFw
cGVuZChibG9iKTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDA0MTMxYjEzMWEwYzlhN2VkYzZk
ZTljYjA4MDU4NWMyNzMwZTYxNWIuLjg4ZjZkNTk4MWM0NGRhYTI0ZDM4ODUzOTBiZmJhMDdmOGNm
ZTc1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgc3RhdGljIHZvaWQgc2V0TWF4aW11bUFn
ZShQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0IGRvdWJsZSYgbWF4aW11bUFnZSkKIHN0
YXRpYyBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIC8vIENyZWF0ZSBkZWZhdWx0IG9wdGlv
bnMuCi0gICAgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucyA9IFBvc2l0aW9uT3B0aW9u
czo6Y3JlYXRlKCk7CisgICAgYXV0byBvcHRpb25zID0gUG9zaXRpb25PcHRpb25zOjpjcmVhdGUo
KTsKIAogICAgIC8vIEFyZ3VtZW50IGlzIG9wdGlvbmFsIChoZW5jZSB1bmRlZmluZWQgaXMgYWxs
b3dlZCksIGFuZCBudWxsIGlzIGFsbG93ZWQuCiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKICAgICAgICAgLy8gVXNlIGRlZmF1bHQgb3B0aW9ucy4KLSAgICAgICAgcmV0dXJu
IG9wdGlvbnM7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKG9wdGlvbnMpOwogICAgIH0KIAogICAg
IC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9iamVj
dC4KQEAgLTg3LDM1ICs4NywzNSBAQCBzdGF0aWMgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gY3Jl
YXRlUG9zaXRpb25PcHRpb25zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YQogICAgIC8vIENy
ZWF0ZSB0aGUgZGljdGlvbmFyeSB3cmFwcGVyIGZyb20gdGhlIGluaXRpYWxpemVyIG9iamVjdC4K
ICAgICBKU0RpY3Rpb25hcnkgZGljdGlvbmFyeShleGVjLCBvYmplY3QpOwogCi0gICAgaWYgKCFk
aWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCJlbmFibGVIaWdoQWNjdXJhY3kiLCBvcHRpb25zLmdl
dCgpLCBzZXRFbmFibGVIaWdoQWNjdXJhY3kpKQorICAgIGlmICghZGljdGlvbmFyeS50cnlHZXRQ
cm9wZXJ0eSgiZW5hYmxlSGlnaEFjY3VyYWN5Iiwgb3B0aW9ucy5wdHIoKSwgc2V0RW5hYmxlSGln
aEFjY3VyYWN5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFkaWN0aW9uYXJ5
LnRyeUdldFByb3BlcnR5KCJ0aW1lb3V0Iiwgb3B0aW9ucy5nZXQoKSwgc2V0VGltZW91dCkpCisg
ICAgaWYgKCFkaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCJ0aW1lb3V0Iiwgb3B0aW9ucy5wdHIo
KSwgc2V0VGltZW91dCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghZGljdGlv
bmFyeS50cnlHZXRQcm9wZXJ0eSgibWF4aW11bUFnZSIsIG9wdGlvbnMuZ2V0KCksIHNldE1heGlt
dW1BZ2UpKQorICAgIGlmICghZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0eSgibWF4aW11bUFnZSIs
IG9wdGlvbnMucHRyKCksIHNldE1heGltdW1BZ2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBvcHRpb25zOworICAgIHJldHVybiBXVEZNb3ZlKG9wdGlvbnMpOwogfQog
CiBKU1ZhbHVlIEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUmIHN0
YXRlKQogewogICAgIC8vIEFyZ3VtZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBv
c2l0aW9uRXJyb3JDYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucwogCi0gICAgUmVm
UHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9u
bHlDYWxsYmFjazxKU1Bvc2l0aW9uQ2FsbGJhY2s+KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHN0
YXRlLmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVGdW5j
dGlvbk9ubHlDYWxsYmFjazxKU1Bvc2l0aW9uQ2FsbGJhY2s+KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHN0YXRlLmFyZ3VtZW50KDApKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3NpdGlvbkNhbGxiYWNr
KTsKIAotICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxs
YmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTUG9zaXRpb25FcnJvckNhbGxiYWNr
Pigmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBzdGF0ZS5hcmd1bWVudCgxKSwgQ2FsbGJhY2tBbGxv
d1VuZGVmaW5lZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsKKyAgICBhdXRvIHBvc2l0aW9uRXJyb3JD
YWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTUG9zaXRpb25FcnJvckNhbGxi
YWNrPigmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBzdGF0ZS5hcmd1bWVudCgxKSwgQ2FsbGJhY2tB
bGxvd1VuZGVmaW5lZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPFBv
c2l0aW9uT3B0aW9ucz4gcG9zaXRpb25PcHRpb25zID0gY3JlYXRlUG9zaXRpb25PcHRpb25zKCZz
dGF0ZSwgc3RhdGUuYXJndW1lbnQoMikpOworICAgIGF1dG8gcG9zaXRpb25PcHRpb25zID0gY3Jl
YXRlUG9zaXRpb25PcHRpb25zKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMikpOwogICAgIGlmIChz
dGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
QVNTRVJUKHBvc2l0aW9uT3B0aW9ucyk7CiAKLSAgICB3cmFwcGVkKCkuZ2V0Q3VycmVudFBvc2l0
aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVs
ZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsKKyAgICB3cmFwcGVkKCkuZ2V0Q3Vy
cmVudFBvc2l0aW9uKFdURk1vdmUocG9zaXRpb25DYWxsYmFjayksIFdURk1vdmUocG9zaXRpb25F
cnJvckNhbGxiYWNrKSwgV1RGTW92ZShwb3NpdGlvbk9wdGlvbnMpKTsKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIH0KIApAQCAtMTIzLDIxICsxMjMsMjEgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0
aW9uOjp3YXRjaFBvc2l0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgLy8gQXJndW1lbnRz
OiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25FcnJvckNhbGxiYWNrLCAob3B0
aW9uYWwpUG9zaXRpb25PcHRpb25zCiAKLSAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9z
aXRpb25DYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTUG9zaXRpb25DYWxs
YmFjaz4oJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgc3RhdGUuYXJndW1lbnQoMCkpOworICAgIGF1
dG8gcG9zaXRpb25DYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTUG9zaXRp
b25DYWxsYmFjaz4oJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgc3RhdGUuYXJndW1lbnQoMCkpOwog
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uQ2FsbGJhY2spOwogCi0gICAgUmVmUHRyPFBvc2l0aW9u
RXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5
Q2FsbGJhY2s8SlNQb3NpdGlvbkVycm9yQ2FsbGJhY2s+KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCks
IHN0YXRlLmFyZ3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkIHwgQ2FsbGJhY2tBbGxv
d051bGwpOworICAgIGF1dG8gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25P
bmx5Q2FsbGJhY2s8SlNQb3NpdGlvbkVycm9yQ2FsbGJhY2s+KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHN0YXRlLmFyZ3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkIHwgQ2FsbGJhY2tB
bGxvd051bGwpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAKLSAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9w
dGlvbnMgPSBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgyKSk7
CisgICAgYXV0byBwb3NpdGlvbk9wdGlvbnMgPSBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoJnN0YXRl
LCBzdGF0ZS5hcmd1bWVudCgyKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25PcHRpb25zKTsK
IAotICAgIGludCB3YXRjaElEID0gd3JhcHBlZCgpLndhdGNoUG9zaXRpb24ocG9zaXRpb25DYWxs
YmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9u
T3B0aW9ucy5yZWxlYXNlKCkpOworICAgIGludCB3YXRjaElEID0gd3JhcHBlZCgpLndhdGNoUG9z
aXRpb24oV1RGTW92ZShwb3NpdGlvbkNhbGxiYWNrKSwgV1RGTW92ZShwb3NpdGlvbkVycm9yQ2Fs
bGJhY2spLCBXVEZNb3ZlKHBvc2l0aW9uT3B0aW9ucykpOwogICAgIHJldHVybiBqc051bWJlcih3
YXRjaElEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcAppbmRleCA2YjIxMjQ0OTg3NWU3OGU4Y2JiZGQ3MmZjMjNkMGY2OWI4
Mzk2OTAxLi41YWZiY2QwMDYzN2Y1ZjE5NDhhOWI3ZGZiYjBiMWE3YWIyZjcwNmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcApA
QCAtODQsMTggKzg0LDE2IEBAIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFj
ZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4KLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBw
b3J0ID0gSlNNZXNzYWdlUG9ydDo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICAgICAgaWYgKHBvcnQp
IHsKKyAgICAgICAgaWYgKFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IEpTTWVzc2FnZVBvcnQ6
OnRvV3JhcHBlZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGUg
cG9ydHMuCiAgICAgICAgICAgICBpZiAocG9ydEFycmF5LmNvbnRhaW5zKHBvcnQpKSB7CiAgICAg
ICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcnRB
cnJheS5hcHBlbmQocG9ydC5yZWxlYXNlKCkpOworICAgICAgICAgICAgcG9ydEFycmF5LmFwcGVu
ZChXVEZNb3ZlKHBvcnQpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSB0b0FycmF5QnVmZmVyKHZhbHVlKTsKLSAgICAgICAg
ICAgIGlmIChhcnJheUJ1ZmZlcikKLSAgICAgICAgICAgICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5k
KGFycmF5QnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyID0gdG9BcnJheUJ1ZmZlcih2YWx1ZSkpCisgICAgICAgICAgICAgICAgYXJyYXlCdWZm
ZXJzLmFwcGVuZChXVEZNb3ZlKGFycmF5QnVmZmVyKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNh
Y3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2Fj
dGlvbkN1c3RvbS5jcHAKaW5kZXggNzQyMTI1NmIwNDZhOGQ3MjY4ZTIzNjdkYzJlMTNjZmFhYzIy
NDMxMi4uOGU5ZDU3ZWM1M2RhYTFkODQwNGQzMDg1ZmZhMTc5NzE4NmU2MGZhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5j
cHAKQEAgLTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVT
cWwoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICB3cmFwcGVkKCkuZXhlY3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJh
Y2sucmVsZWFzZSgpLCBlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIHdyYXBwZWQo
KS5leGVjdXRlU1FMKHNxbFN0YXRlbWVudCwgc3FsVmFsdWVzLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
V1RGTW92ZShlcnJvckNhbGxiYWNrKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZjIzNDQwMDkwMTIzNDhj
ODI4ZWViZjdjMTUzMTg1NmRlMzI4YTM4NS4uNWZjNzJkZjA1YzdiNjgxN2YyYjllYjgxMzdiMjQy
OTIzZmMwMjRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyTWFjLm1tCkBAIC03NSw3ICs3NSw3IEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJ
bnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQo
CiAgICAgICAgIGlkIG9iamVjdEZvcldlYlNjcmlwdCA9IFt3aWRnZXRWaWV3IG9iamVjdEZvcldl
YlNjcmlwdF07CiAgICAgICAgIGlmICghb2JqZWN0Rm9yV2ViU2NyaXB0KQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBKU0M6OkJpbmRpbmdzOjpPYmpjSW5zdGFu
Y2U6OmNyZWF0ZShvYmplY3RGb3JXZWJTY3JpcHQsIHJvb3RPYmplY3QucmVsZWFzZSgpKTsKKyAg
ICAgICAgcmV0dXJuIEpTQzo6QmluZGluZ3M6Ok9iamNJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdEZv
cldlYlNjcmlwdCwgV1RGTW92ZShyb290T2JqZWN0KSk7CiAgICAgfQogCiAgICAgaWYgKFt3aWRn
ZXRWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY3JlYXRlUGx1Z2luU2NyaXB0YWJs
ZU9iamVjdCldKSB7CkBAIC04NSw3ICs4NSw3IEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0
YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoCiAg
ICAgICAgIE5QT2JqZWN0KiBucE9iamVjdCA9IFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpblNjcmlw
dGFibGVPYmplY3RdOwogICAgICAgICBpZiAoIW5wT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRp
bmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShucE9iamVjdCwgcm9vdE9iamVjdC5yZWxlYXNlKCkpOwor
ICAgICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3Rh
bmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOwogICAgICAgICAvLyAt
Y3JlYXRlUGx1Z2luU2NyaXB0YWJsZU9iamVjdCByZXR1cm5zIGEgcmV0YWluZWQgTlBPYmplY3Qu
ICBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIHJlbGVhc2UgaXQuCiAgICAgICAgIF9OUE5fUmVs
ZWFzZU9iamVjdChucE9iamVjdCk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
NTVjZDQ5ODhjNDRmNTA0NzM1NDU4OGZmNjc5MGViYmFiNTMzNDdiZi4uODk5ZTgwNTM1ZGM0MjY2
OWRmMmRhYTViZjczNmIzNDhiNWE0M2QzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM1MzIsNyArMzUzMiw3IEBAIHN1
YiBHZW5lcmF0ZUNhbGxXaXRoCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhJbnNwZWN0b3I6
OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhzdGF0ZSwgIiAuIEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJz
fSAuICIpKTtcbiIpOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyI8aW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5oPiJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siPGluc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5Lmg+In0gPSAxOwotICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3Ms
ICJzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpIik7CisgICAgICAgIHB1c2goQGNhbGxXaXRoQXJn
cywgIldURk1vdmUoc2NyaXB0QXJndW1lbnRzKSIpOwogICAgIH0KICAgICBwdXNoKEBjYWxsV2l0
aEFyZ3MsICJhY3RpdmVET01XaW5kb3coc3RhdGUpIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVu
ZGVkQXR0cmlidXRlQ29udGFpbnMoJGNhbGxXaXRoLCAiQWN0aXZlV2luZG93Iik7CiAgICAgcHVz
aChAY2FsbFdpdGhBcmdzLCAiZmlyc3RET01XaW5kb3coc3RhdGUpIikgaWYgJGNvZGVHZW5lcmF0
b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGNhbGxXaXRoLCAiRmlyc3RXaW5kb3ciKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAppbmRleCAy
MzM0YzEzODMzNDQ3MzdmMGQyZmVhNWIwNjc2MTNhZjg2MjlmMjgyLi4xNDBjOWIzMTg4ZjliOGE0
YWY2NDlkZjQ4NzRmN2QwOTA5ZDBhMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9LZXlSU0FNYWMuY3BwCkBAIC0yNjIsOSArMjYyLDkgQEAgdm9pZCBDcnlwdG9LZXlS
U0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5
cHRvQWxnb3IKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBjYWxsT25X
ZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIFJlZlB0
cjxDcnlwdG9LZXlSU0E+IHB1YmxpY0tleSA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRo
bSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBjY1B1YmxpY0tleSwgdHJ1
ZSwgdXNhZ2UpOwotICAgICAgICAgICAgUmVmUHRyPENyeXB0b0tleVJTQT4gcHJpdmF0ZUtleSA9
IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRvS2V5
VHlwZTo6UHJpdmF0ZSwgY2NQcml2YXRlS2V5LCBleHRyYWN0YWJsZSwgdXNhZ2UpOwotICAgICAg
ICAgICAgKCpsb2NhbENhbGxiYWNrKShDcnlwdG9LZXlQYWlyOjpjcmVhdGUocHVibGljS2V5LnJl
bGVhc2UoKSwgcHJpdmF0ZUtleS5yZWxlYXNlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gcHVibGlj
S2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlw
dG9LZXlUeXBlOjpQdWJsaWMsIGNjUHVibGljS2V5LCB0cnVlLCB1c2FnZSk7CisgICAgICAgICAg
ICBhdXRvIHByaXZhdGVLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gs
IGhhc0hhc2gsIENyeXB0b0tleVR5cGU6OlByaXZhdGUsIGNjUHJpdmF0ZUtleSwgZXh0cmFjdGFi
bGUsIHVzYWdlKTsKKyAgICAgICAgICAgICgqbG9jYWxDYWxsYmFjaykoQ3J5cHRvS2V5UGFpcjo6
Y3JlYXRlKFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSkpOwogICAgICAg
ICAgICAgZGVsZXRlIGxvY2FsQ2FsbGJhY2s7CiAgICAgICAgICAgICBkZWxldGUgbG9jYWxGYWls
dXJlQ2FsbGJhY2s7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5j
cHAKaW5kZXggMGYzODcyM2EzNzU3MjAzOWU5MTczYmE2NDJhYjdiNThkNjY3MzcwYy4uYjEzNGM0
NTQ2NTFkMzIwMDEwN2E1YWE4ZmRkNzBkNzM1Yjk2ZGJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QmFzaWNTaGFwZXMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQoUGFzc1JlZlB0cjxDU1NQcmlt
CiAgICAgICAgIHNpZGUgPSBkZWZhdWx0U2lkZTsKICAgICB9CiAKLSAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c2lkZSksIGFtb3VudC5yZWxlYXNlKCkpKTsKKyAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKFBhaXI6OmNyZWF0ZShjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2lkZSksIFdURk1v
dmUoYW1vdW50KSkpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkQ2lyY2xlU3RyaW5nKGNvbnN0
IFN0cmluZyYgcmFkaXVzLCBjb25zdCBTdHJpbmcmIGNlbnRlclgsIGNvbnN0IFN0cmluZyYgY2Vu
dGVyWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggZTYxODgyYTUyOTQ1NmQ3MGEwNTUyMTBjOTBjMDUzZjE0YWY3ODlmYi4u
NzFkNzEwNjhkYjUzM2FkODUzYjI5MDUwYzAwMzNlZTE2ZjM1YzE5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTYwOSw3
ICs2MDksNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUmVw
ZWF0KGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKICAgICAgICAgdmVydGljYWxSZXBlYXQg
PSBob3Jpem9udGFsUmVwZWF0OwogICAgIGVsc2UKICAgICAgICAgdmVydGljYWxSZXBlYXQgPSBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVsZShpbWFn
ZS52ZXJ0aWNhbFJ1bGUoKSkpOwotICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
UGFpcjo6Y3JlYXRlKGhvcml6b250YWxSZXBlYXQucmVsZWFzZSgpLCB2ZXJ0aWNhbFJlcGVhdC5y
ZWxlYXNlKCkpKTsKKyAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNy
ZWF0ZShXVEZNb3ZlKGhvcml6b250YWxSZXBlYXQpLCBXVEZNb3ZlKHZlcnRpY2FsUmVwZWF0KSkp
OwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlKGNvbnN0
IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKQEAgLTE3OTEsMTMgKzE3OTEsMTMgQEAgc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
LCBDU1NQcm9wZXJ0eUkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBjc3NW
YWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwotICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAg
YXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGZv
ciAoQ291bnRlckRpcmVjdGl2ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7
IGl0ICE9IG1hcC0+ZW5kKCk7ICsraXQpIHsKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShpdC0+a2V5LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykp
OwogICAgICAgICBzaG9ydCBudW1iZXIgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q291bnRl
ckluY3JlbWVudCA/IGl0LT52YWx1ZS5pbmNyZW1lbnRWYWx1ZSgpIDogaXQtPnZhbHVlLnJlc2V0
VmFsdWUoKTsKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSgo
ZG91YmxlKW51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAgICB9Ci0g
ICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQog
CiBzdGF0aWMgdm9pZCBsb2dVbmltcGxlbWVudGVkUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQpCkBAIC0zMzk2LDkgKzMzOTYsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAog
ICAgICAgICAgICAgLy8gTm90IGEgcmVhbCBzdHlsZSBwcm9wZXJ0eSAtLSB1c2VkIGJ5IHRoZSBl
ZGl0aW5nIGVuZ2luZSAtLSBzbyBoYXMgbm8gY29tcHV0ZWQgdmFsdWUuCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEluaXRpYWxMZXR0ZXI6IHsKLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZHJvcCA9ICFzdHlsZS0+aW5pdGlh
bExldHRlckRyb3AoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVy
RHJvcCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpemUgPSAhc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQo
KSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDog
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKGRyb3AucmVsZWFzZSgpLCBzaXplLnJlbGVh
c2UoKSkpOworICAgICAgICAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBkcm9wID0gIXN0eWxl
LT5pbml0aWFsTGV0dGVyRHJvcCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vcm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmluaXRp
YWxMZXR0ZXJEcm9wKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAg
ICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gc2l6ZSA9ICFzdHlsZS0+aW5pdGlhbExldHRlckhl
aWdodCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1h
bCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoV1RGTW92ZShkcm9wKSwgV1RGTW92
ZShzaXplKSkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Cb3R0b21Db2xsYXBzZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFm
dGVyQ29sbGFwc2U6CkBAIC0zNjE4LDcgKzM2MTgsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LAogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsg
Y3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+YmxlbmRN
b2RlKCkpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAg
ICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmQ6CiAgICAgICAgICAgICByZXR1cm4gZ2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29udGVudERpc3RyaWJ1dGlvblZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUu
Y3BwCmluZGV4IDdiMmQxNGEyNThiNDU4ZjRlYTI4MjQ3ZDlhMDQ0YzI2MTE1YTMyNmQuLjAzNDll
ZGU4MGE4ZTYxZTkxOWVmYTRjMTVjZjlkYTgwYTE1Y2U1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUuY3BwCkBAIC00NSwxNCArNDUs
MTQgQEAgQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlOjp+Q1NTQ29udGVudERpc3RyaWJ1dGlv
blZhbHVlKCkKIAogU3RyaW5nIENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZTo6Y3VzdG9tQ1NT
VGV4dCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKG1fZGlzdHJpYnV0aW9uICE9IENT
U1ZhbHVlSW52YWxpZCkKICAgICAgICAgbGlzdC0+YXBwZW5kKGRpc3RyaWJ1dGlvbigpKTsKICAg
ICBpZiAobV9wb3NpdGlvbiAhPSBDU1NWYWx1ZUludmFsaWQpCiAgICAgICAgIGxpc3QtPmFwcGVu
ZChwb3NpdGlvbigpKTsKICAgICBpZiAobV9vdmVyZmxvdyAhPSBDU1NWYWx1ZUludmFsaWQpCiAg
ICAgICAgIGxpc3QtPmFwcGVuZChvdmVyZmxvdygpKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCktPmN1c3RvbUNTU1RleHQoKTsKKyAgICByZXR1cm4gbGlzdC0+Y3VzdG9tQ1NTVGV4dCgpOwog
fQogCiBib29sIENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0Nv
bnRlbnREaXN0cmlidXRpb25WYWx1ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggYWRkZjRiYWZmZTIzYWY4M2JjNTk3MWRhOTY0
MDYxNTQ2MTM3MmIwOC4uYThhZDMwYTVjOTY3ZGIwNjg4ZTBlMjkxYTkzNTk2YjJiZjRkY2Y0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcApAQCAtMTM2LDkg
KzEzNiw3IEBAIFJlZlB0cjxJbWFnZT4gQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6CiAgICAgICAgIHJldHVybiBJbWFnZTo6
bnVsbEltYWdlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPmFwcGx5KCk7CiAKLSAgICBtX2dlbmVy
YXRlZEltYWdlID0gZmlsdGVyUmVuZGVyZXItPm91dHB1dCgpLT5jb3B5SW1hZ2UoKTsKLQotICAg
IHJldHVybiBtX2dlbmVyYXRlZEltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZmlsdGVyUmVu
ZGVyZXItPm91dHB1dCgpLT5jb3B5SW1hZ2UoKTsKIH0KIAogdm9pZCBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjpmaWx0ZXJJbWFnZUNoYW5nZWQoY29uc3QgSW50UmVjdCYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuaAppbmRleCA1ZmM3NWFiYzA0ZDExZjEzOWNmMmJiNjdmOTlk
MjFmYmZhZTg2OTczLi5lYmQ1ZDlmNTI5ZWE3ZTFmMzRkOGEyNjhiZDI3MjQyOGNjODQ4YjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTExMiw3ICsxMTIs
NiBAQCBwcml2YXRlOgogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJPcGVyYXRpb25zOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7Ci0g
ICAgUmVmUHRyPEltYWdlPiBtX2dlbmVyYXRlZEltYWdlOwogCiAgICAgRmlsdGVyU3ViaW1hZ2VP
YnNlcnZlclByb3h5IG1fZmlsdGVyU3ViaW1hZ2VPYnNlcnZlcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueS5pbgppbmRleCA3NDUwZmZjN2YzNmRjMTcyM2QzNjIzNzU1ZmIzNmRiOWNkMjc4
YzIwLi5kMmQ0OWY2Mzk4YWI4OTUwN2NjZGZkYzk4OTlkNTA3YzFiZmQxMWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTQ4OSw3ICs0ODksNyBAQCBibG9ja19ydWxlX2xpc3Q6
CiAgICAgICBpZiAoUmVmUHRyPFN0eWxlUnVsZUJhc2U+IHJ1bGUgPSBhZG9wdFJlZigkMikpIHsK
ICAgICAgICAgICBpZiAoISQkKQogICAgICAgICAgICAgICAkJCA9IG5ldyBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZUJhc2U+PjsKLSAgICAgICAgICAkJC0+YXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsK
KyAgICAgICAgICAkJC0+YXBwZW5kKFdURk1vdmUocnVsZSkpOwogICAgICAgfQogICB9CiAgIDsK
QEAgLTUwMSw3ICs1MDEsNyBAQCBibG9ja192YWxpZF9ydWxlX2xpc3Q6CiAgICAgICBpZiAoUmVm
UHRyPFN0eWxlUnVsZUJhc2U+IHJ1bGUgPSBhZG9wdFJlZigkMikpIHsKICAgICAgICAgICBpZiAo
ISQkKQogICAgICAgICAgICAgICAkJCA9IG5ldyBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PjsKLSAgICAgICAgICAkJC0+YXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKKyAgICAgICAgICAkJC0+
YXBwZW5kKFdURk1vdmUocnVsZSkpOwogICAgICAgfQogICB9CiAgIDsKQEAgLTgxNyw3ICs4MTcs
NyBAQCBrZXlmcmFtZXNfcnVsZToKICAgICB8IGtleWZyYW1lc19ydWxlIGtleWZyYW1lX3J1bGUg
bWF5YmVfc3BhY2UgewogICAgICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoUmVmUHRyPFN0eWxl
S2V5ZnJhbWU+IGtleWZyYW1lID0gYWRvcHRSZWYoJDIpKQotICAgICAgICAgICAgJCQtPmFwcGVu
ZChrZXlmcmFtZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgJCQtPmFwcGVuZChXVEZNb3ZlKGtl
eWZyYW1lKSk7CiAgICAgfQogICAgIDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFn
ZVZhbHVlLmNwcAppbmRleCBlYjU3YjUzMWQ5OTE5NTk1YzI0NDIyMjY2Y2EwYmVlNjA3Mjk5YTIy
Li44NzAwMTJkMGRhNGQ0NmFhOWIwYTdiMTNhZmI0NjNlYWU3ZjcyYTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcApAQCAtNDEsOSArNDEsNyBAQCBSZWZQdHI8
SW1hZ2U+IENTU05hbWVkSW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSkKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgbV9nZW5lcmF0ZWRJbWFnZSA9IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZTo6Y3JlYXRlKG1fbmFtZSwgc2l6ZSk7Ci0KLSAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKG1f
bmFtZSwgc2l6ZSk7CiB9CiAKIGJvb2wgQ1NTTmFtZWRJbWFnZVZhbHVlOjplcXVhbHMoY29uc3Qg
Q1NTTmFtZWRJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NOYW1lZEltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1l
ZEltYWdlVmFsdWUuaAppbmRleCBmNmEzMjcwNTJiODZhMTY3YzBiNjQxMDliMGEyODNhMDUyNmIy
MWE4Li41ZTYyYTNmMDQxZTNkMmVlOWRkM2QzOTlhNzZlOGFkNjM1OWJmYjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU05hbWVkSW1hZ2VWYWx1ZS5oCkBAIC01OCw3ICs1OCw2IEBAIHByaXZhdGU6
CiAgICAgfQogCiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBSZWZQdHI8SW1hZ2U+IG1fZ2VuZXJh
dGVkSW1hZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCmluZGV4IDMyNzZkM2RkZjZhNTdhZTMxNDI5ODEwMTY1MzNhMDZjYTljZDY1MDMuLjFi
YzFiZGY4NTU3ZjZkNWU1MjM0MjZkYTMxNWY4NWQzYWY0MmQwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCkBAIC01MDEwLDEyICs1MDEwLDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZp
bGxQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMSwK
ICAgICAgICAgICAgIGlmICh2YWx1ZXMpCiAgICAgICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQo
Y3VyclZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHZhbHVlID0gY3VyclZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICB2YWx1
ZSA9IFdURk1vdmUoY3VyclZhbHVlKTsKICAgICAgICAgICAgIGlmIChjdXJyVmFsdWUyKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHZhbHVlczIpCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlczIt
PmFwcGVuZChjdXJyVmFsdWUyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUyID0gY3VyclZhbHVlMi5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlMiA9IFdURk1vdmUoY3VyclZhbHVlMik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIApAQCAtNTAyNiwxNCArNTAyNiwxNCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VGaWxsUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQm
IHByb3BJZDEsCiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7
Ci0gICAgICAgIHJldFZhbHVlMSA9IHZhbHVlcy5yZWxlYXNlKCk7CisgICAgICAgIHJldFZhbHVl
MSA9IFdURk1vdmUodmFsdWVzKTsKICAgICAgICAgaWYgKHZhbHVlczIgJiYgdmFsdWVzMi0+bGVu
Z3RoKCkpCi0gICAgICAgICAgICByZXRWYWx1ZTIgPSB2YWx1ZXMyLnJlbGVhc2UoKTsKKyAgICAg
ICAgICAgIHJldFZhbHVlMiA9IFdURk1vdmUodmFsdWVzMik7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICBpZiAodmFsdWUpIHsKLSAgICAgICAgcmV0VmFsdWUxID0gdmFsdWUucmVs
ZWFzZSgpOwotICAgICAgICByZXRWYWx1ZTIgPSB2YWx1ZTIucmVsZWFzZSgpOworICAgICAgICBy
ZXRWYWx1ZTEgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgcmV0VmFsdWUyID0gV1RGTW92ZSh2
YWx1ZTIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTQwNyw3ICs1NDA3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mIHIKICAgICAgICAgICAg
IGlmICh2YWx1ZXMpCiAgICAgICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoY3VyclZhbHVlLnJl
bGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHZhbHVl
ID0gY3VyclZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFdURk1vdmUo
Y3VyclZhbHVlKTsKIAogICAgICAgICAgICAgYWxsb3dDb21tYSA9IHRydWU7CiAgICAgICAgIH0K
QEAgLTU0MTksMTEgKzU0MTksMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mIHIKICAgICB9CiAK
ICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy0+bGVuZ3RoKCkpIHsKLSAgICAgICAgcmVzdWx0ID0g
dmFsdWVzLnJlbGVhc2UoKTsKKyAgICAgICAgcmVzdWx0ID0gV1RGTW92ZSh2YWx1ZXMpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIHJlc3Vs
dCA9IHZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgcmVzdWx0ID0gV1RGTW92ZSh2YWx1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTU3LDcg
KzY1NTcsNyBAQCBSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUluc2V0Um91
bmRlZENvcm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpY1NoYQogICAgICAgICBpZiAoIWluZGV4QWZ0
ZXJTbGFzaCkKICAgICAgICAgICAgIHJhZGlpWzBdW2ldID0gcmFkaXVzOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByYWRpaVsxXVtpIC0gaW5kZXhBZnRlclNsYXNoXSA9IHJhZGl1cy5yZWxl
YXNlKCk7CisgICAgICAgICAgICByYWRpaVsxXVtpIC0gaW5kZXhBZnRlclNsYXNoXSA9IFdURk1v
dmUocmFkaXVzKTsKICAgICB9CiAKICAgICBpZiAoIWluZGV4QWZ0ZXJTbGFzaCkgewpAQCAtNjU2
NywxMCArNjU2NywxMCBAQCBSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUlu
c2V0Um91bmRlZENvcm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpY1NoYQogICAgIH0gZWxzZQogICAg
ICAgICBjb21wbGV0ZUJvcmRlclJhZGlpKHJhZGlpWzFdKTsKIAotICAgIHNoYXBlLT5zZXRUb3BM
ZWZ0UmFkaXVzKGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihyYWRpaVswXVswXS5yZWxlYXNlKCks
IHJhZGlpWzFdWzBdLnJlbGVhc2UoKSkpOwotICAgIHNoYXBlLT5zZXRUb3BSaWdodFJhZGl1cyhj
cmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocmFkaWlbMF1bMV0ucmVsZWFzZSgpLCByYWRpaVsxXVsx
XS5yZWxlYXNlKCkpKTsKLSAgICBzaGFwZS0+c2V0Qm90dG9tUmlnaHRSYWRpdXMoY3JlYXRlUHJp
bWl0aXZlVmFsdWVQYWlyKHJhZGlpWzBdWzJdLnJlbGVhc2UoKSwgcmFkaWlbMV1bMl0ucmVsZWFz
ZSgpKSk7Ci0gICAgc2hhcGUtPnNldEJvdHRvbUxlZnRSYWRpdXMoY3JlYXRlUHJpbWl0aXZlVmFs
dWVQYWlyKHJhZGlpWzBdWzNdLnJlbGVhc2UoKSwgcmFkaWlbMV1bM10ucmVsZWFzZSgpKSk7Cisg
ICAgc2hhcGUtPnNldFRvcExlZnRSYWRpdXMoY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKFdURk1v
dmUocmFkaWlbMF1bMF0pLCBXVEZNb3ZlKHJhZGlpWzFdWzBdKSkpOworICAgIHNoYXBlLT5zZXRU
b3BSaWdodFJhZGl1cyhjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoV1RGTW92ZShyYWRpaVswXVsx
XSksIFdURk1vdmUocmFkaWlbMV1bMV0pKSk7CisgICAgc2hhcGUtPnNldEJvdHRvbVJpZ2h0UmFk
aXVzKGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEZNb3ZlKHJhZGlpWzBdWzJdKSwgV1RGTW92
ZShyYWRpaVsxXVsyXSkpKTsKKyAgICBzaGFwZS0+c2V0Qm90dG9tTGVmdFJhZGl1cyhjcmVhdGVQ
cmltaXRpdmVWYWx1ZVBhaXIoV1RGTW92ZShyYWRpaVswXVszXSksIFdURk1vdmUocmFkaWlbMV1b
M10pKSk7CiAKICAgICByZXR1cm4gc2hhcGU7CiB9CkBAIC03OTMyLDI4ICs3OTMyLDI4IEBAIHN0
cnVjdCBTaGFkb3dQYXJzZUNvbnRleHQgewogCiAgICAgdm9pZCBjb21taXRMZW5ndGgoQ1NTUGFy
c2VyOjpWYWx1ZVdpdGhDYWxjdWxhdGlvbiYgdmFsdWVXaXRoQ2FsY3VsYXRpb24pCiAgICAgewot
ICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHByaW1pdGl2ZVZhbHVlID0gbV9wYXJz
ZXIuY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKHZhbHVlV2l0aENhbGN1bGF0aW9uKTsKKyAg
ICAgICAgYXV0byBwcmltaXRpdmVWYWx1ZSA9IG1fcGFyc2VyLmNyZWF0ZVByaW1pdGl2ZU51bWVy
aWNWYWx1ZSh2YWx1ZVdpdGhDYWxjdWxhdGlvbik7CiAKICAgICAgICAgaWYgKGFsbG93WCkgewot
ICAgICAgICAgICAgeCA9IHByaW1pdGl2ZVZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHgg
PSBXVEZNb3ZlKHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgIGFsbG93WCA9IGZhbHNlOwog
ICAgICAgICAgICAgYWxsb3dZID0gdHJ1ZTsKICAgICAgICAgICAgIGFsbG93Q29sb3IgPSBmYWxz
ZTsKICAgICAgICAgICAgIGFsbG93U3R5bGUgPSBmYWxzZTsKICAgICAgICAgICAgIGFsbG93QnJl
YWsgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlIGlmIChhbGxvd1kpIHsKLSAgICAgICAgICAgIHkg
PSBwcmltaXRpdmVWYWx1ZS5yZWxlYXNlKCk7CisgICAgICAgICAgICB5ID0gV1RGTW92ZShwcmlt
aXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICBhbGxvd1kgPSBmYWxzZTsKICAgICAgICAgICAgIGFs
bG93Qmx1ciA9IHRydWU7CiAgICAgICAgICAgICBhbGxvd0NvbG9yID0gdHJ1ZTsKICAgICAgICAg
ICAgIGFsbG93U3R5bGUgPSBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdyB8
fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJveFNoYWRvdzsKICAgICAgICAgICAgIGFsbG93QnJl
YWsgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGFsbG93Qmx1cikgewotICAgICAgICAgICAg
Ymx1ciA9IHByaW1pdGl2ZVZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGJsdXIgPSBXVEZN
b3ZlKHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgIGFsbG93Qmx1ciA9IGZhbHNlOwogICAg
ICAgICAgICAgYWxsb3dTcHJlYWQgPSBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNo
YWRvdyB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJveFNoYWRvdzsKICAgICAgICAgfSBlbHNl
IGlmIChhbGxvd1NwcmVhZCkgewotICAgICAgICAgICAgc3ByZWFkID0gcHJpbWl0aXZlVmFsdWUu
cmVsZWFzZSgpOworICAgICAgICAgICAgc3ByZWFkID0gV1RGTW92ZShwcmltaXRpdmVWYWx1ZSk7
CiAgICAgICAgICAgICBhbGxvd1NwcmVhZCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAt
ODA2OCw3ICs4MDY4LDcgQEAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVNo
YWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgQ1NTUHIKICAgICBpZiAoY29udGV4
dC5hbGxvd0JyZWFrKSB7CiAgICAgICAgIGNvbnRleHQuY29tbWl0VmFsdWUoKTsKICAgICAgICAg
aWYgKGNvbnRleHQudmFsdWVzICYmIGNvbnRleHQudmFsdWVzLT5sZW5ndGgoKSkKLSAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0LnZhbHVlcy5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4g
V1RGTW92ZShjb250ZXh0LnZhbHVlcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC04NDEyLDE2ICs4NDEyLDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tbWl0TnVtYmVyKENT
U1BhcnNlcjo6VmFsdWVXaXRoQ2FsY3VsYXRpb24mIHZhbHVlV2l0aENhbGN1bGF0aW9uKQogICAg
IHsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwcmltaXRpdmVWYWx1ZSA9IG1f
cGFyc2VyLmNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZSh2YWx1ZVdpdGhDYWxjdWxhdGlvbik7
CisgICAgICAgIGF1dG8gcHJpbWl0aXZlVmFsdWUgPSBtX3BhcnNlci5jcmVhdGVQcmltaXRpdmVO
dW1lcmljVmFsdWUodmFsdWVXaXRoQ2FsY3VsYXRpb24pOwogICAgICAgICBpZiAoIW1fdG9wKQot
ICAgICAgICAgICAgbV90b3AgPSBwcmltaXRpdmVWYWx1ZS5yZWxlYXNlKCk7CisgICAgICAgICAg
ICBtX3RvcCA9IFdURk1vdmUocHJpbWl0aXZlVmFsdWUpOwogICAgICAgICBlbHNlIGlmICghbV9y
aWdodCkKLSAgICAgICAgICAgIG1fcmlnaHQgPSBwcmltaXRpdmVWYWx1ZS5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICBtX3JpZ2h0ID0gV1RGTW92ZShwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIGVs
c2UgaWYgKCFtX2JvdHRvbSkKLSAgICAgICAgICAgIG1fYm90dG9tID0gcHJpbWl0aXZlVmFsdWUu
cmVsZWFzZSgpOworICAgICAgICAgICAgbV9ib3R0b20gPSBXVEZNb3ZlKHByaW1pdGl2ZVZhbHVl
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fbGVmdCk7Ci0gICAgICAg
ICAgICBtX2xlZnQgPSBwcmltaXRpdmVWYWx1ZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBtX2xl
ZnQgPSBXVEZNb3ZlKHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fYWxs
b3dOdW1iZXIgPSAhbV9sZWZ0OwpAQCAtODUzMSwxNCArODUzMSwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBwcmltaXRpdmVWYWx1ZSA9IG1fcGFyc2VyLmNyZWF0ZVByaW1pdGl2ZU51bWVyaWNW
YWx1ZSh2YWx1ZVdpdGhDYWxjdWxhdGlvbik7CiAKICAgICAgICAgaWYgKCFtX3RvcCkKLSAgICAg
ICAgICAgIG1fdG9wID0gcHJpbWl0aXZlVmFsdWUucmVsZWFzZSgpOworICAgICAgICAgICAgbV90
b3AgPSBXVEZNb3ZlKHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAoIW1fcmlnaHQp
Ci0gICAgICAgICAgICBtX3JpZ2h0ID0gcHJpbWl0aXZlVmFsdWUucmVsZWFzZSgpOworICAgICAg
ICAgICAgbV9yaWdodCA9IFdURk1vdmUocHJpbWl0aXZlVmFsdWUpOwogICAgICAgICBlbHNlIGlm
ICghbV9ib3R0b20pCi0gICAgICAgICAgICBtX2JvdHRvbSA9IHByaW1pdGl2ZVZhbHVlLnJlbGVh
c2UoKTsKKyAgICAgICAgICAgIG1fYm90dG9tID0gV1RGTW92ZShwcmltaXRpdmVWYWx1ZSk7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFtX2xlZnQpOwotICAgICAgICAgICAg
bV9sZWZ0ID0gcHJpbWl0aXZlVmFsdWUucmVsZWFzZSgpOworICAgICAgICAgICAgbV9sZWZ0ID0g
V1RGTW92ZShwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2FsbG93TnVt
YmVyID0gIW1fbGVmdDsKQEAgLTg2NTUsMTAgKzg2NTUsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlQm9yZGVyUmFkaXVzKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgaWYgKCF2YWxpZGF0ZVVuaXQodmFsdWVXaXRoQ2FsY3VsYXRpb24sIEZMZW5ndGggfCBG
UGVyY2VudCB8IEZOb25OZWcpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzID0gY3JlYXRlUHJpbWl0aXZlTnVtZXJp
Y1ZhbHVlKHZhbHVlV2l0aENhbGN1bGF0aW9uKTsKKyAgICAgICAgYXV0byByYWRpdXMgPSBjcmVh
dGVQcmltaXRpdmVOdW1lcmljVmFsdWUodmFsdWVXaXRoQ2FsY3VsYXRpb24pOwogCiAgICAgICAg
IGlmICghaW5kZXhBZnRlclNsYXNoKSB7Ci0gICAgICAgICAgICByYWRpaVswXVtpXSA9IHJhZGl1
czsKKyAgICAgICAgICAgIHJhZGlpWzBdW2ldID0gV1RGTW92ZShyYWRpdXMpOwogCiAgICAgICAg
ICAgICAvLyBMZWdhY3kgc3ludGF4OiAtd2Via2l0LWJvcmRlci1yYWRpdXM6IGwxIGwyOyBpcyBl
cXVpdmFsZW50IHRvIGJvcmRlci1yYWRpdXM6IGwxIC8gbDI7CiAgICAgICAgICAgICBpZiAobnVt
ID09IDIgJiYgcHJvcElkID09IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzKSB7CkBAIC04
NjY2LDcgKzg2NjYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMoQ1NTUHJv
cGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgICAgIGNvbXBsZXRl
Qm9yZGVyUmFkaWkocmFkaWlbMF0pOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHJhZGlpWzFdW2kgLSBpbmRleEFmdGVyU2xhc2hdID0gcmFkaXVzLnJlbGVhc2Uo
KTsKKyAgICAgICAgICAgIHJhZGlpWzFdW2kgLSBpbmRleEFmdGVyU2xhc2hdID0gV1RGTW92ZShy
YWRpdXMpOwogICAgIH0KIAogICAgIGlmICghaW5kZXhBZnRlclNsYXNoKSB7CkBAIC04Njc3LDEw
ICs4Njc3LDEwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyhDU1NQcm9wZXJ0
eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNvbXBsZXRlQm9yZGVyUmFkaWko
cmFkaWlbMV0pOwogCiAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKCp0aGlzLCBQcm9w
ZXJ0eUltcGxpY2l0KTsKLSAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRS
YWRpdXMsIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihyYWRpaVswXVswXS5yZWxlYXNlKCksIHJh
ZGlpWzFdWzBdLnJlbGVhc2UoKSksIGltcG9ydGFudCk7Ci0gICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHJhZGlp
WzBdWzFdLnJlbGVhc2UoKSwgcmFkaWlbMV1bMV0ucmVsZWFzZSgpKSwgaW1wb3J0YW50KTsKLSAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBjcmVhdGVQ
cmltaXRpdmVWYWx1ZVBhaXIocmFkaWlbMF1bMl0ucmVsZWFzZSgpLCByYWRpaVsxXVsyXS5yZWxl
YXNlKCkpLCBpbXBvcnRhbnQpOwotICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tTGVmdFJhZGl1cywgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHJhZGlpWzBdWzNdLnJlbGVh
c2UoKSwgcmFkaWlbMV1bM10ucmVsZWFzZSgpKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFp
cihXVEZNb3ZlKHJhZGlpWzBdWzBdKSwgV1RGTW92ZShyYWRpaVsxXVswXSkpLCBpbXBvcnRhbnQp
OworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIGNyZWF0
ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEZNb3ZlKHJhZGlpWzBdWzFdKSwgV1RGTW92ZShyYWRpaVsx
XVsxXSkpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMsIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEZNb3ZlKHJhZGlpWzBd
WzJdKSwgV1RGTW92ZShyYWRpaVsxXVsyXSkpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgY3JlYXRlUHJpbWl0aXZlVmFsdWVQ
YWlyKFdURk1vdmUocmFkaWlbMF1bM10pLCBXVEZNb3ZlKHJhZGlpWzFdWzNdKSksIGltcG9ydGFu
dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg3NDIsNyArODc0Miw3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZUNvdW50ZXIoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGludCBkZWZhdWx0VmFs
dWUsIGJvb2wgaW1wb3J0CiAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7
CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0
ZVByaW1pdGl2ZVZhbHVlUGFpcihjb3VudGVyTmFtZS5yZWxlYXNlKCksCisgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEZNb3ZlKGNvdW50ZXJO
YW1lKSwKICAgICAgICAgICAgICAgICAgICAgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVWYWx1ZShpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpKTsKICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IElEOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtODk3NCw3ICs4
OTc0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZEdyYWRpZW50KENTU1BhcnNl
clZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8Q1MKICAgICAgICAgYXJndW1lbnQgPSBhcmdz
LT5uZXh0KCk7CiAgICAgfQogCi0gICAgZ3JhZGllbnQgPSByZXN1bHQucmVsZWFzZSgpOworICAg
IGdyYWRpZW50ID0gV1RGTW92ZShyZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC05
MDcyLDcgKzkwNzIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkTGluZWFyR3Jh
ZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZgogICAgIGlmICghcmVzdWx0
LT5zdG9wQ291bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZ3JhZGllbnQgPSBy
ZXN1bHQucmVsZWFzZSgpOworICAgIGdyYWRpZW50ID0gV1RGTW92ZShyZXN1bHQpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC05MTkyLDcgKzkxOTIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IFJlZgogICAgIGlmICghcGFyc2VHcmFkaWVudENvbG9yU3RvcHMoKmFyZ3MsICpyZXN1bHQsIGV4
cGVjdENvbW1hKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZ3JhZGllbnQgPSByZXN1
bHQucmVsZWFzZSgpOworICAgIGdyYWRpZW50ID0gV1RGTW92ZShyZXN1bHQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC05MjY1LDcgKzkyNjUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VM
aW5lYXJHcmFkaWVudChDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPENTU1Zh
bAogICAgIGlmICghcmVzdWx0LT5zdG9wQ291bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgZ3JhZGllbnQgPSByZXN1bHQucmVsZWFzZSgpOworICAgIGdyYWRpZW50ID0gV1RGTW92
ZShyZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC05MzkxLDcgKzkzOTEsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJWYWx1ZUxpc3QmIHZh
bHVlTGlzdCwgUmVmUHRyPENTU1ZhbAogICAgIGlmICghcGFyc2VHcmFkaWVudENvbG9yU3RvcHMo
KmFyZ3MsICpyZXN1bHQsIGV4cGVjdENvbW1hKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgZ3JhZGllbnQgPSByZXN1bHQucmVsZWFzZSgpOworICAgIGdyYWRpZW50ID0gV1RGTW92ZShy
ZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDA2NSw3ICsxMDA2NSw3IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybVZhbHVlKENTU1BhcnNlclZh
bHVlJiB2YWx1ZSkKICAgICAgICAgKythcmdOdW1iZXI7CiAgICAgfQogCi0gICAgcmV0dXJuIHRy
YW5zZm9ybVZhbHVlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZSh0cmFuc2Zvcm1WYWx1
ZSk7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjppc0JsZW5kTW9kZShDU1NWYWx1ZUlEIHZhbHVlSUQp
CkBAIC0xMDEwOSw3ICsxMDEwOSw3IEBAIHN0YXRpYyB2b2lkIGZpbHRlckluZm9Gb3JOYW1lKGNv
bnN0IENTU1BhcnNlclN0cmluZyYgbmFtZSwgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6CiAKIFJlZlB0
cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUJ1aWx0aW5GaWx0ZXJBcmd1
bWVudHMoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzLCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Rmls
dGVyT3BlcmF0aW9uVHlwZSBmaWx0ZXJUeXBlKQogewotICAgIFJlZlB0cjxXZWJLaXRDU1NGaWx0
ZXJWYWx1ZT4gZmlsdGVyVmFsdWUgPSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y3JlYXRlKGZpbHRl
clR5cGUpOworICAgIGF1dG8gZmlsdGVyVmFsdWUgPSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y3Jl
YXRlKGZpbHRlclR5cGUpOwogCiAgICAgc3dpdGNoIChmaWx0ZXJUeXBlKSB7ICAgIAogICAgIGNh
c2UgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkdyYXlzY2FsZUZpbHRlck9wZXJhdGlvbjoKQEAgLTEw
MTk1LDcgKzEwMTk1LDcgQEAgUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBDU1NQYXJzZXI6
OnBhcnNlQnVpbHRpbkZpbHRlckFyZ3VtZW50cyhDU1NQYXJzZXJWYWwKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgcmV0dXJuIGZpbHRlclZh
bHVlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShmaWx0ZXJWYWx1ZSk7CiB9CiAKIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZUZpbHRlcihDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwg
UmVmUHRyPENTU1ZhbHVlPiYgcmVzdWx0KQpAQCAtMTA2MDAsNyArMTA2MDAsNyBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VUZXh0SW5kZW50KCkKIHsKICAgICAvLyA8bGVuZ3Ro
PiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQgIHdoZW4gQ1NTM19URVhUIGlzIGRpc2FibGVkLgog
ICAgIC8vIFsgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gXSAmJiBbIC13ZWJraXQtaGFuZ2luZyB8
fCAtd2Via2l0LWVhY2gtbGluZSBdPyB8IGluaGVyaXQgIHdoZW4gQ1NTM19URVhUIGlzIGVuYWJs
ZWQuCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CiAgICAgYm9vbCBoYXNMZW5ndGhPclBlcmNlbnRhZ2UgPSBmYWxzZTsK
ICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIGJvb2wgaGFzRWFjaExpbmUgPSBmYWxzZTsKQEAg
LTEwNjMyLDcgKzEwNjMyLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVGV4
dEluZGVudCgpCiAgICAgaWYgKCFoYXNMZW5ndGhPclBlcmNlbnRhZ2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VIYW5naW5nUHVuY3R1YXRpb24o
Ym9vbCBpbXBvcnRhbnQpCkBAIC0xMjk2Niw3ICsxMjk2Niw3IEBAIHZvaWQgQ1NTUGFyc2VyOjph
ZGROZXdSdWxlVG9Tb3VyY2VUcmVlKFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGUp
CiAgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmxhc3QoKS0+Y2hpbGRSdWxlcy5hcHBl
bmQocnVsZSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IENTU1BhcnNlcjo6
cG9wUnVsZURhdGEoKQorUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBDU1NQYXJzZXI6OnBvcFJ1
bGVEYXRhKCkKIHsKICAgICBpZiAoIW1fcnVsZVNvdXJjZURhdGFSZXN1bHQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTI5NzUsNyArMTI5NzUsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVT
b3VyY2VEYXRhPiBDU1NQYXJzZXI6OnBvcFJ1bGVEYXRhKCkKICAgICBtX2N1cnJlbnRSdWxlRGF0
YSA9IG51bGxwdHI7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBkYXRhID0gbV9jdXJy
ZW50UnVsZURhdGFTdGFjay0+bGFzdCgpOwogICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPnJl
bW92ZUxhc3QoKTsKLSAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGE7
CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpzeW50YXhFcnJvcihjb25zdCBMb2NhdGlvbiYgbG9jYXRp
b24sIFN5bnRheEVycm9yVHlwZSBlcnJvcikKQEAgLTEzMzIzLDEwICsxMzMyMywxMCBAQCB2b2lk
IENTU1BhcnNlcjo6bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6VHlwZSBy
dWxlVHlwZSkKICAgICBpZiAobV9jdXJyZW50UnVsZURhdGEpCiAgICAgICAgIG1fY3VycmVudFJ1
bGVEYXRhU3RhY2stPnJlbW92ZUxhc3QoKTsKIAotICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gZGF0YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUocnVsZVR5cGUpOworICAgIGF1dG8g
ZGF0YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUocnVsZVR5cGUpOwogICAgIGRhdGEtPnJ1
bGVIZWFkZXJSYW5nZS5zdGFydCA9IHRva2VuU3RhcnRPZmZzZXQoKTsKLSAgICBtX2N1cnJlbnRS
dWxlRGF0YSA9IGRhdGE7Ci0gICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay0+YXBwZW5kKGRhdGEu
cmVsZWFzZSgpKTsKKyAgICBtX2N1cnJlbnRSdWxlRGF0YSA9IGRhdGEuY29weVJlZigpOworICAg
IG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CkBAIC0xMzQ0NSwxNiArMTM0NDUsMTYgQEAg
dm9pZCBDU1NQYXJzZXI6Om1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJv
b2wgaXNQcm9wZXJ0eVBhcnNlZCkKIH0KIAogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJ
T04pCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlVmlld3BvcnRS
dWxlKCkKK1JlZjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVZpZXdwb3J0UnVsZSgp
CiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9u
cyA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlUnVsZVZpZXdwb3J0PiBydWxlID0gU3R5bGVS
dWxlVmlld3BvcnQ6OmNyZWF0ZShjcmVhdGVTdHlsZVByb3BlcnRpZXMoKSk7CisgICAgYXV0byBy
dWxlID0gU3R5bGVSdWxlVmlld3BvcnQ6OmNyZWF0ZShjcmVhdGVTdHlsZVByb3BlcnRpZXMoKSk7
CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKICAgICBwcm9jZXNzQW5kQWRkTmV3UnVsZVRvU291
cmNlVHJlZUlmTmVlZGVkKCk7CiAKLSAgICByZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHJ1bGU7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZpZXdwb3J0UHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmlu
ZGV4IGRjNjE4MzYxNzJkOTg0NGQ2YTNjZjFhNjAyYmJiZmI0MTE1N2IwYmMuLmVmZjJmODNhZWNj
ZjJlM2U1YTBhNmM4MTU5ODI4MzAxOGE1YTdjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAg
LTQ1MCw3ICs0NTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrUHJvcGVydHlFbmQoYm9vbCBp
c0ltcG9ydGFudEZvdW5kLCBib29sIGlzUHJvcGVydHlQYXJzZWQpOwogICAgIHZvaWQgcHJvY2Vz
c0FuZEFkZE5ld1J1bGVUb1NvdXJjZVRyZWVJZk5lZWRlZCgpOwogICAgIHZvaWQgYWRkTmV3UnVs
ZVRvU291cmNlVHJlZShQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPik7Ci0gICAgUGFzc1Jl
ZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcG9wUnVsZURhdGEoKTsKKyAgICBSZWZQdHI8Q1NTUnVs
ZVNvdXJjZURhdGE+IHBvcFJ1bGVEYXRhKCk7CiAgICAgdm9pZCByZXNldFByb3BlcnR5UmFuZ2Uo
KSB7IG1fcHJvcGVydHlSYW5nZS5zdGFydCA9IG1fcHJvcGVydHlSYW5nZS5lbmQgPSBVSU5UX01B
WDsgfQogICAgIGJvb2wgaXNFeHRyYWN0aW5nU291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEh
bV9jdXJyZW50UnVsZURhdGFTdGFjazsgfQogICAgIHZvaWQgc3ludGF4RXJyb3IoY29uc3QgTG9j
YXRpb24mLCBTeW50YXhFcnJvclR5cGUgPSBHZW5lcmFsU3ludGF4RXJyb3IpOwpAQCAtNDYyLDcg
KzQ2Miw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAg
IHZvaWQgbWFya1ZpZXdwb3J0UnVsZUJvZHlTdGFydCgpIHsgbV9pblZpZXdwb3J0ID0gdHJ1ZTsg
fQogICAgIHZvaWQgbWFya1ZpZXdwb3J0UnVsZUJvZHlFbmQoKSB7IG1faW5WaWV3cG9ydCA9IGZh
bHNlOyB9Ci0gICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVWaWV3cG9ydFJ1bGUo
KTsKKyAgICBSZWY8U3R5bGVSdWxlQmFzZT4gY3JlYXRlVmlld3BvcnRSdWxlKCk7CiAjZW5kaWYK
IAogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVl
KFZhbHVlV2l0aENhbGN1bGF0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
Y3BwCmluZGV4IDBlODNlNTMzZTk4MTE5YzlmYWVjN2Y0NjQ4Y2IyZWUyYWIzMmU2MTcuLmI4YzM3
NWRjNmIxODAxODc2NTdiOTAxMjQ4Njk0YTliMGI5ZWQwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwCkBAIC04NiwxNiArODYsMTYgQEAgYm9vbCBDU1NQYXJzZXJWYWx1
ZUxpc3Q6OmNvbnRhaW5zVmFyaWFibGVzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgpCitS
ZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgpCiB7CiAgICAg
UmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKICAgICBpZiAoaWQpCiAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZCk7CiAgICAgCiAgICAgaWYg
KHVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
UGFyc2VyT3BlcmF0b3IoaVZhbHVlKTsKKyAgICAgICAgYXV0byBwcmltaXRpdmVWYWx1ZSA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVQYXJzZXJPcGVyYXRvcihpVmFsdWUpOwogICAgICAgICBw
cmltaXRpdmVWYWx1ZS0+c2V0UHJpbWl0aXZlVHlwZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BB
UlNFUl9PUEVSQVRPUik7Ci0gICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5yZWxlYXNlKCk7
CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHByaW1pdGl2ZVZhbHVlKTsKICAgICB9CiAgICAgaWYg
KHVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKQogICAgICAgICByZXR1cm4gQ1NTRnVu
Y3Rpb25WYWx1ZTo6Y3JlYXRlKGZ1bmN0aW9uKTsKQEAgLTE3MiwxMSArMTcyLDExIEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgpCiAgICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NBTEM6CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX05VTUJFUjoKICAgICBjYXNlIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTEVOR1RIOgotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIENTU1BhcnNl
clNlbGVjdG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IoY29u
c3QgQ1NTUGFyc2VyU3RyaW5nJiBwc2V1ZG9UeXBlU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlclZhbHVlcy5oCmluZGV4IDhhZGUyZTU5NjA0ZjMwYmIwYTcwZmI0NDViZDM5NjBjMjdiYzNh
OGYuLjczYTk1NGNjYzZmMDFkOTUzOGRkNTE2NGJkNTc3OWEzNWEzOTAyZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdHJ1Y3QgQ1NTUGFy
c2VyVmFsdWUgewogCiAgICAgdm9pZCBzZXRGcm9tVmFsdWVMaXN0KHN0ZDo6dW5pcXVlX3B0cjxD
U1NQYXJzZXJWYWx1ZUxpc3Q+KTsKIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNyZWF0ZUNT
U1ZhbHVlKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBjcmVhdGVDU1NWYWx1ZSgpOwogfTsKIAog
dm9pZCBkZXN0cm95KGNvbnN0IENTU1BhcnNlclZhbHVlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZUxpc3QuY3BwCmluZGV4IDM2NjUwMTA5MWQwMzAwOTk1NGMwNzIxMDBmNDdhMDMxNjA4OThiNzUu
LjNkZDA0MzI1NzFmMzQxN2ZmNmZhZTJhODVjYjBiMmUyYWY4M2M0OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZUxpc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgQ1NTVmFsdWVMaXN0Ojpo
YXNWYWx1ZShDU1NWYWx1ZSogdmFsKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVlTGlzdDo6Y29weSgpCitSZWY8Q1NTVmFsdWVM
aXN0PiBDU1NWYWx1ZUxpc3Q6OmNvcHkoKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG5l
d0xpc3Q7CiAgICAgc3dpdGNoIChtX3ZhbHVlTGlzdFNlcGFyYXRvcikgewpAQCAtOTYsNyArOTYs
NyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVMaXN0Ojpjb3B5KCkKICAgICB9
CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKQogICAgICAgICBuZXdMaXN0LT5hcHBl
bmQodmFsdWUuZ2V0KCkpOwotICAgIHJldHVybiBuZXdMaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gbmV3TGlzdC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiBTdHJpbmcgQ1NTVmFsdWVMaXN0Ojpj
dXN0b21DU1NUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCBjZWU0
NGExZmQyMDVhMzdjNWZjY2YwNzJiZmNhOGVjMTQ3MjY5NDZlLi45ZWY3YjI5OTFlNjEwOGU4YjUz
ODkxOThkMjBkNGE1NGU3MDI4OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC02
Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByZXBlbmQoUmVmPENTU1ZhbHVlPiYmKTsK
ICAgICBib29sIHJlbW92ZUFsbChDU1NWYWx1ZSopOwogICAgIGJvb2wgaGFzVmFsdWUoQ1NTVmFs
dWUqKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29weSgpOworICAgIFJl
ZjxDU1NWYWx1ZUxpc3Q+IGNvcHkoKTsKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29u
c3Q7CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVmFsdWVMaXN0JikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CmluZGV4IDA0N2YyZTBiYjYxYzFiMjliOGU1NTdkZWU5NTlkODlmMmJlMWQ1NDcuLjIwNDViNTQ4
ZmE1Y2Q1YTA0YzkzOGYyNTdiM2Y2NGEyMTYxOGFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMDYsNyAr
MjA2LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdmdQcm9w
ZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHkKICAgICAgICAgICAgIHJldHVybiBnbHlw
aE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS5nbHlwaE9yaWVudGF0aW9u
SG9yaXpvbnRhbCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25W
ZXJ0aWNhbDogewogICAgICAgICAgICAgaWYgKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
dWUgPSBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS5nbHlwaE9y
aWVudGF0aW9uVmVydGljYWwoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlbGVh
c2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICAgICAgICAgIGlmIChz
dmdTdHlsZS5nbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKSA9PSBHT19BVVRPKQogICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZUF1dG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4
IDM2ODZjOWJjZjY3NTJhZGNiMmY0YTAwZDEwZGFlNzZjOGE3MjFmYTguLjYzZGU5NDQ1ZGZkYTU2
ZGRhOGNjNzBjODMwNjk2ZTU5NDBhNzM3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmgKQEAgLTgwLDEzICs4MCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cmluZyBjb252ZXJ0U3RyaW5nT3JOb25lKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwog
ICAgIHN0YXRpYyBUZXh0RW1waGFzaXNQb3NpdGlvbiBjb252ZXJ0VGV4dEVtcGhhc2lzUG9zaXRp
b24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEVUZXh0QWxpZ24gY29u
dmVydFRleHRBbGlnbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gY29udmVydENsaXBQYXRoKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IGNvbnZl
cnRDbGlwUGF0aChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgRVJlc2l6
ZSBjb252ZXJ0UmVzaXplKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBp
bnQgY29udmVydE1hcnF1ZWVSZXBldGl0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwog
ICAgIHN0YXRpYyBpbnQgY29udmVydE1hcnF1ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwgQ1NTVmFs
dWUmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxRdW90ZXNEYXRhPiBjb252ZXJ0UXVvdGVzKFN0
eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUZXh0VW5kZXJsaW5lUG9zaXRp
b24gY29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IGNvbnZlcnRSZWZsZWN0
aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBSZWZQdHI8U3R5bGVS
ZWZsZWN0aW9uPiBjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsK
ICAgICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5pdGlhbExldHRlcihTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgZmxvYXQgY29udmVydFRleHRTdHJva2VXaWR0aChTdHls
ZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgTGluZUJveENvbnRhaW4gY29udmVy
dExpbmVCb3hDb250YWluKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwpAQCAtNDgyLDcgKzQ4
Miw3IEBAIGlubGluZSBFVGV4dEFsaWduIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRl
eHRBbGlnbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlCiAgICAgcmV0dXJuIHBhcmVudFN0eWxlLT50
ZXh0QWxpZ24oKTsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRoKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRp
b24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRoKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC01MjMsNyArNTIzLDcgQEAgaW5saW5l
IFBhc3NSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydENsaXBQYXRoKFN0eWwKICAgICAgICAgb3BlcmF0aW9uID0gQm94Q2xpcFBhdGhPcGVyYXRp
b246OmNyZWF0ZShyZWZlcmVuY2VCb3gpOwogICAgIH0KIAotICAgIHJldHVybiBvcGVyYXRpb24u
cmVsZWFzZSgpOworICAgIHJldHVybiBvcGVyYXRpb247CiB9CiAKIGlubGluZSBFUmVzaXplIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlc2l6ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC02MTYsNyArNjE2LDcgQEAgaW5saW5lIFRleHRV
bmRlcmxpbmVQb3NpdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJs
aW5lUG9zaXRpb24KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFVuZGVybGluZVBvc2l0aW9u
Pihjb21iaW5lZFBvc2l0aW9uKTsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8U3R5bGVSZWZsZWN0
aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8U3R5bGVS
ZWZsZWN0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAg
LTYyNSw3ICs2MjUsNyBAQCBpbmxpbmUgUGFzc1JlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlZmxlY3Rpb24oU3R5bAogCiAgICAgYXV0byYgcmVm
bGVjdFZhbHVlID0gZG93bmNhc3Q8Q1NTUmVmbGVjdFZhbHVlPih2YWx1ZSk7CiAKLSAgICBSZWZQ
dHI8U3R5bGVSZWZsZWN0aW9uPiByZWZsZWN0aW9uID0gU3R5bGVSZWZsZWN0aW9uOjpjcmVhdGUo
KTsKKyAgICBhdXRvIHJlZmxlY3Rpb24gPSBTdHlsZVJlZmxlY3Rpb246OmNyZWF0ZSgpOwogICAg
IHJlZmxlY3Rpb24tPnNldERpcmVjdGlvbigqcmVmbGVjdFZhbHVlLmRpcmVjdGlvbigpKTsKIAog
ICAgIGlmIChyZWZsZWN0VmFsdWUub2Zmc2V0KCkpCkBAIC02MzYsNyArNjM2LDcgQEAgaW5saW5l
IFBhc3NSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRSZWZsZWN0aW9uKFN0eWwKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlTWFwKCktPm1hcE5pbmVQ
aWVjZUltYWdlKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgcmVmbGVjdFZhbHVlLm1hc2so
KSwgbWFzayk7CiAgICAgcmVmbGVjdGlvbi0+c2V0TWFzayhtYXNrKTsKIAotICAgIHJldHVybiBy
ZWZsZWN0aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShyZWZsZWN0aW9uKTsKIH0K
IAogaW5saW5lIEludFNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0SW5pdGlhbExl
dHRlcihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCmluZGV4IDFiN2EzOWYzZWQwYzc0N2UxOWJkZWFlMjhmYTY2ZGZjZDVhZDhm
NTkuLjM3NWU0MTBlNzYwOWYzYmExNGExNzFlZDdiN2JiYjY1ODM5ODNhMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE2NzksMTIgKzE2NzksMTIgQEAgUGFzc1JlZlB0
cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHksIENTU1ZhbHUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxTdHls
ZUltYWdlPiBTdHlsZVJlc29sdmVyOjpjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgQ1NTSW1hZ2VWYWx1ZSYgdmFsdWUpCitSZWZQdHI8U3R5bGVJbWFnZT4g
U3R5bGVSZXNvbHZlcjo6Y2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHksIENTU0ltYWdlVmFsdWUmIHZhbHVlKQogewogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBp
bWFnZSA9IHZhbHVlLmNhY2hlZE9yUGVuZGluZ0ltYWdlKCk7CiAgICAgaWYgKGltYWdlICYmIGlt
YWdlLT5pc1BlbmRpbmdJbWFnZSgpKQogICAgICAgICBtX3N0YXRlLnBlbmRpbmdJbWFnZVByb3Bl
cnRpZXMoKS5zZXQocHJvcGVydHksICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIGltYWdlLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9CiAKIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVS
ZXNvbHZlcjo6Z2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIHZhbHVlKQpAQCAtMTcwMiwyMSArMTcwMiwyMSBA
QCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmdlbmVyYXRlZE9yUGVuZGlu
Z0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlECiB9CiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkK
LVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6c2V0T3JQZW5kaW5nRnJvbVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0ltYWdlU2V0VmFsdWUmIHZhbHVlKQorUmVm
UHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZVNldFZhbHVlJiB2YWx1ZSkKIHsKICAgICBSZWZQ
dHI8U3R5bGVJbWFnZT4gaW1hZ2UgPSB2YWx1ZS5jYWNoZWRPclBlbmRpbmdJbWFnZVNldChkb2N1
bWVudCgpKTsKICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCiAgICAg
ICAgIG1fc3RhdGUucGVuZGluZ0ltYWdlUHJvcGVydGllcygpLnNldChwcm9wZXJ0eSwgJnZhbHVl
KTsKLSAgICByZXR1cm4gaW1hZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBpbWFnZTsKIH0KICNl
bmRpZgogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmN1cnNvck9yUGVu
ZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NDdXJzb3JJbWFnZVZhbHVl
JiB2YWx1ZSkKK1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpjdXJzb3JPclBlbmRp
bmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlID0gdmFsdWUuY2FjaGVkT3JQ
ZW5kaW5nSW1hZ2UoZG9jdW1lbnQoKSk7CiAgICAgaWYgKGltYWdlICYmIGltYWdlLT5pc1BlbmRp
bmdJbWFnZSgpKQogICAgICAgICBtX3N0YXRlLnBlbmRpbmdJbWFnZVByb3BlcnRpZXMoKS5zZXQo
cHJvcGVydHksICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIGltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gaW1hZ2U7CiB9CiAKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDUyOGRjNDhmNzRhNTE0NmVhYjYzOTFkZjMxZWRhOTZh
MGY5ZWU3YmIuLjkzYWVmZjAwZGI5Njg4Mzk3NGI2YTE2OTk5MWUzZTMxMWFiOGU4Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtNDU5LDEyICs0NTksMTIgQEAgcHVibGljOgog
ICAgIFN0YXRlJiBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogICAgIFBhc3NSZWZQdHI8
U3R5bGVJbWFnZT4gc3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSYpOwotICAgIFBh
c3NSZWZQdHI8U3R5bGVJbWFnZT4gY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5
SUQsIENTU0ltYWdlVmFsdWUmKTsKKyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gY2FjaGVkT3JQZW5k
aW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU0ltYWdlVmFsdWUmKTsKICAgICBQYXNzUmVm
UHRyPFN0eWxlSW1hZ2U+IGdlbmVyYXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlE
LCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlJik7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCi0g
ICAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBzZXRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVy
dHlJRCwgQ1NTSW1hZ2VTZXRWYWx1ZSYpOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBzZXRPclBl
bmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTSW1hZ2VTZXRWYWx1ZSYpOwogI2VuZGlm
Ci0gICAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBjdXJzb3JPclBlbmRpbmdGcm9tVmFsdWUoQ1NT
UHJvcGVydHlJRCwgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpOworICAgIFJlZlB0cjxTdHlsZUltYWdl
PiBjdXJzb3JPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZSYpOwogCiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpOyB9CiAgICAgYm9v
bCBhcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZS5jcHAKaW5kZXggMTE2YzEyOTc1ZTllYjgzYjU0OGQ0NTJhMjM4MGE5MWU5Y2QyYzBmZi4uYjMw
ZjcyNTI0NDk3Mjc5NTE5ZTc5YWY3NzVhZmJjOWYzZjgwZTMxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxl
QmFzZTo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIFJlZjxTdHlsZVJ1bGVCYXNlPigqc3RhdGlj
X2Nhc3Q8U3R5bGVSdWxlQmFzZSo+KG51bGxwdHIpKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxl
PiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50
U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CitSZWZQdHI8Q1NTUnVsZT4gU3R5bGVS
dWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBD
U1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NSdWxlPiBydWxlOwog
ICAgIFN0eWxlUnVsZUJhc2UmIHNlbGYgPSBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhp
cyk7CkBAIC0xODcsNyArMTg3LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNl
OjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQKICAgICB9CiAg
ICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1bGUtPnNldFBhcmVudFJ1bGUocGFyZW50UnVs
ZSk7Ci0gICAgcmV0dXJuIHJ1bGUucmVsZWFzZSgpOworICAgIHJldHVybiBydWxlOwogfQogCiB1
bnNpZ25lZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmgKaW5kZXggZTJmODk3MjhkMDljMTBmOTliODljOTY4Njg2MWUzMzBjZDIzNzE4MC4uZjU2NTEz
NjRkMWRlYTI4N2Y0ZjUzZDliYTAxZTVhY2I0ODk5OGMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUu
aApAQCAtOTQsNyArOTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJv
eSgpOwogICAgIAotICAgIFBhc3NSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENT
U1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAg
ICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVu
dFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1fdHlw
ZSA6IDU7CiAgICAgc2lnbmVkIG1fc291cmNlTGluZSA6IDI3OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4
IDI0N2ZkM2ZkNjNkMjNjYWQ1ZThhMTRmMTlmMzAxZjZiYWRjMGEyNmEuLjQwNWU2ZDNkYzU2MTQ5
YzI5YjJkYmY2ZjYxMzgwZWU0OWU4YzViNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKQEAgLTUyLDE4ICs1
MiwxOCBAQCBBdHRyOjpBdHRyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBzdAogewogfQogCi1SZWZQdHI8QXR0cj4gQXR0
cjo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCitS
ZWY8QXR0cj4gQXR0cjo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpCiB7Ci0gICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBhZG9wdFJlZihuZXcgQXR0cihl
bGVtZW50LCBuYW1lKSk7CisgICAgUmVmPEF0dHI+IGF0dHIgPSBhZG9wdFJlZigqbmV3IEF0dHIo
ZWxlbWVudCwgbmFtZSkpOwogICAgIGF0dHItPmNyZWF0ZVRleHRDaGlsZCgpOwotICAgIHJldHVy
biBhdHRyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYXR0cjsKIH0KIAotUmVmUHRyPEF0dHI+IEF0
dHI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCitSZWY8QXR0cj4gQXR0cjo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGFkb3B0UmVmKG5ldyBBdHRy
KGRvY3VtZW50LCBuYW1lLCB2YWx1ZSkpOworICAgIFJlZjxBdHRyPiBhdHRyID0gYWRvcHRSZWYo
Km5ldyBBdHRyKGRvY3VtZW50LCBuYW1lLCB2YWx1ZSkpOwogICAgIGF0dHItPmNyZWF0ZVRleHRD
aGlsZCgpOwotICAgIHJldHVybiBhdHRyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYXR0cjsKIH0K
IAogQXR0cjo6fkF0dHIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKaW5kZXggZDA0YjlmMDFhMDhhYTQ1Yjk5ZWE0OTYz
MzkzY2Q1OWViNmQ0Y2MwMS4uOTA2NDMzMDAwOGE4MDQwYjNhNmIzM2NjYzNhMzkxMTg4NWU1NWE0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5oCkBAIC00Miw4ICs0Miw4IEBAIGNsYXNzIE11dGFibGVTdHlsZVByb3Bl
cnRpZXM7CiAKIGNsYXNzIEF0dHIgZmluYWwgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBdHRyPiBjcmVhdGUoRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEF0dHI+IGNyZWF0ZShEb2N1bWVudCYsIGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKKyAgICBzdGF0
aWMgUmVmPEF0dHI+IGNyZWF0ZShFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAg
IHN0YXRpYyBSZWY8QXR0cj4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIHZpcnR1YWwgfkF0dHIoKTsKIAogICAg
IFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gcXVhbGlmaWVkTmFtZSgpLnRvU3RyaW5nKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IGZkMmNjNDljMjgxYThmMGQ3NThl
OGMzNTRkZjI0NjRiOTNhM2JjYTMuLmVkZjQwNDJlNjBmMzA3OWUzMzYyMTJiMDliMWQxY2I4NzRk
MTg4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtMjA5LDEzICsyMDksMTMg
QEAgcHVibGljOgogICAgIFJlZlB0cjxOb2RlPiBuZXh0Tm9kZSgpCiAgICAgewogICAgICAgICBp
ZiAoTElLRUxZKCFoYXNTbmFwc2hvdCgpKSkgewotICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5v
ZGUgPSBtX2N1cnJlbnROb2RlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBu
b2RlID0gV1RGTW92ZShtX2N1cnJlbnROb2RlKTsKICAgICAgICAgICAgIGlmIChub2RlKQogICAg
ICAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOwotICAgICAg
ICAgICAgcmV0dXJuIG5vZGUucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKG1fY3VycmVudEluZGV4ID49IG1fc25hcHNob3Quc2l6ZSgp
KQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgcmV0dXJuIG1fc25hcHNob3RbbV9jdXJyZW50SW5kZXgrK107CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCA2ZmVhZTJhYzAxZTg5NDRkODBjZDUyMGU3NGE4MzFmMDRk
YjAzNmY0Li5jMDY5MmFkNjZjZTg1MjBiYWVkNmNiZjdmNmEzZGJmZWJiZjA5ZGUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM3NTIsNyArMzc1Miw3IEBAIGJvb2wgRG9jdW1lbnQ6OnNl
dEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBmb2N1c0NoYW5nZUJsb2NrZWQg
PSBmYWxzZTsKLSAgICBSZWZQdHI8RWxlbWVudD4gb2xkRm9jdXNlZEVsZW1lbnQgPSBtX2ZvY3Vz
ZWRFbGVtZW50LnJlbGVhc2UoKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gb2xkRm9jdXNlZEVsZW1l
bnQgPSBXVEZNb3ZlKG1fZm9jdXNlZEVsZW1lbnQpOwogCiAgICAgLy8gUmVtb3ZlIGZvY3VzIGZy
b20gdGhlIGV4aXN0aW5nIGZvY3VzIG5vZGUgKGlmIGFueSkKICAgICBpZiAob2xkRm9jdXNlZEVs
ZW1lbnQpIHsKQEAgLTQwNjgsNyArNDA2OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5k
b3dGcm9tKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAvLyBBIHZhbGlkIERPTVdpbmRvdyBpcyBu
ZWVkZWQgYnkgQ2FjaGVkRnJhbWUgZm9yIGl0cyBkb2N1bWVudHMuCiAgICAgQVNTRVJUKCFkb2N1
bWVudC0+aW5QYWdlQ2FjaGUoKSk7CiAKLSAgICBtX2RvbVdpbmRvdyA9IGRvY3VtZW50LT5tX2Rv
bVdpbmRvdy5yZWxlYXNlKCk7CisgICAgbV9kb21XaW5kb3cgPSBXVEZNb3ZlKGRvY3VtZW50LT5t
X2RvbVdpbmRvdyk7CiAgICAgbV9kb21XaW5kb3ctPmRpZFNlY3VyZVRyYW5zaXRpb25Ubyh0aGlz
KTsKIAogICAgIEFTU0VSVChtX2RvbVdpbmRvdy0+ZG9jdW1lbnQoKSA9PSB0aGlzKTsKQEAgLTY1
NzMsNyArNjU3Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEVsZW1lbnQqIGluCiAgICAgLy8gYXQgdGhlIHRp
bWUgdGhlIG1vdXNlIHdlbnQgZG93bi4KICAgICBib29sIG11c3RCZUluQWN0aXZlQ2hhaW4gPSBy
ZXF1ZXN0LmFjdGl2ZSgpICYmIHJlcXVlc3QubW92ZSgpOwogCi0gICAgUmVmUHRyPEVsZW1lbnQ+
IG9sZEhvdmVyZWRFbGVtZW50ID0gbV9ob3ZlcmVkRWxlbWVudC5yZWxlYXNlKCk7CisgICAgUmVm
UHRyPEVsZW1lbnQ+IG9sZEhvdmVyZWRFbGVtZW50ID0gV1RGTW92ZShtX2hvdmVyZWRFbGVtZW50
KTsKIAogICAgIC8vIEEgdG91Y2ggcmVsZWFzZSBkb2VzIG5vdCBzZXQgYSBuZXcgaG92ZXIgdGFy
Z2V0OyBjbGVhcmluZyB0aGUgZWxlbWVudCB3ZSdyZSB3b3JraW5nIHdpdGgKICAgICAvLyB3aWxs
IGNsZWFyIHRoZSBjaGFpbiBvZiBob3ZlcmVkIGVsZW1lbnRzIGFsbCB0aGUgd2F5IHRvIHRoZSB0
b3Agb2YgdGhlIHRyZWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggN2RkYzU4YWQyODNhMjc3
YWU4NTQwYTc5ZmQwZTE1MjViZDI4MWJkZS4uYzZlYjQwNjE0YjMyNzk2NjM4NDc1NDczYjUyZDE1
OTlmNTU0NTYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIFJl
ZjxFbGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxk
cmVuKERvY3VtZW50JiB0YXJnZXRECiAgICAgcmV0dXJuIHRhcmdldERvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQodGFnUU5hbWUoKSwgZmFsc2UpOwogfQogCi1SZWZQdHI8QXR0cj4gRWxlbWVudDo6ZGV0
YWNoQXR0cmlidXRlKHVuc2lnbmVkIGluZGV4KQorUmVmPEF0dHI+IEVsZW1lbnQ6OmRldGFjaEF0
dHJpYnV0ZSh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBBU1NFUlQoZWxlbWVudERhdGEoKSk7CiAK
QEAgLTM4Miw3ICszODIsNyBAQCBSZWZQdHI8QXR0cj4gRWxlbWVudDo6ZGV0YWNoQXR0cmlidXRl
KHVuc2lnbmVkIGluZGV4KQogICAgICAgICBhdHRyTm9kZSA9IEF0dHI6OmNyZWF0ZShkb2N1bWVu
dCgpLCBhdHRyaWJ1dGUubmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7CiAKICAgICByZW1vdmVB
dHRyaWJ1dGVJbnRlcm5hbChpbmRleCwgTm90SW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1
dGUpOwotICAgIHJldHVybiBhdHRyTm9kZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGF0dHJOb2Rl
LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIGJvb2wgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCkBAIC0xOTk4LDcgKzE5OTgsNyBAQCBSZWZQdHI8QXR0
cj4gRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKEF0dHImIGF0dHJOb2RlLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICB0cmVlU2NvcGUoKS5hZG9wdElmTmVlZGVkKCZhdHRyTm9kZSk7CiAgICAg
ZW5zdXJlQXR0ck5vZGVMaXN0Rm9yRWxlbWVudCgqdGhpcykuYXBwZW5kKCZhdHRyTm9kZSk7CiAK
LSAgICByZXR1cm4gb2xkQXR0ck5vZGUucmVsZWFzZSgpOworICAgIHJldHVybiBvbGRBdHRyTm9k
ZTsKIH0KIAogUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciYg
YXR0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zMTY3LDcgKzMxNjcsNyBAQCBSZWZQdHI8QXR0
cj4gRWxlbWVudDo6YXR0cklmRXhpc3RzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxBdHRyPiBFbGVtZW50OjplbnN1cmVBdHRyKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCitSZWY8QXR0cj4gRWxlbWVudDo6ZW5zdXJlQXR0cihj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGF1dG8mIGF0dHJOb2RlTGlzdCA9IGVu
c3VyZUF0dHJOb2RlTGlzdEZvckVsZW1lbnQoKnRoaXMpOwogICAgIFJlZlB0cjxBdHRyPiBhdHRy
Tm9kZSA9IGZpbmRBdHRyTm9kZUluTGlzdChhdHRyTm9kZUxpc3QsIG5hbWUpOwpAQCAtMzE3Niw3
ICszMTc2LDcgQEAgUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmVuc3VyZUF0dHIoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkKICAgICAgICAgdHJlZVNjb3BlKCkuYWRvcHRJZk5lZWRlZChhdHRyTm9k
ZS5nZXQoKSk7CiAgICAgICAgIGF0dHJOb2RlTGlzdC5hcHBlbmQoYXR0ck5vZGUpOwogICAgIH0K
LSAgICByZXR1cm4gYXR0ck5vZGUucmVsZWFzZSgpOworICAgIHJldHVybiBhdHRyTm9kZS5yZWxl
YXNlTm9uTnVsbCgpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmRldGFjaEF0dHJOb2RlRnJvbUVsZW1l
bnRXaXRoVmFsdWUoQXR0ciogYXR0ck5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAppbmRleCBiODg0MTRiNzMxNzA1MjlhNTBhMzlmMGVmMjE3NGY3NDBmMjc4
ZDRiLi42YzgwNGRiMThkZmQ2MWE3ZTM5MTI4N2FjOTMwOTk3MDBlN2YyMGFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdmVBdHRy
aWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKICAgICBib29sIHJlbW92ZUF0dHJpYnV0
ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSk7CiAKLSAgICBSZWZQdHI8QXR0cj4gZGV0YWNoQXR0cmlidXRlKHVuc2lnbmVk
IGluZGV4KTsKKyAgICBSZWY8QXR0cj4gZGV0YWNoQXR0cmlidXRlKHVuc2lnbmVkIGluZGV4KTsK
IAogICAgIFJlZlB0cjxBdHRyPiBnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSk7CiAgICAgUmVmUHRyPEF0dHI+IGdldEF0dHJpYnV0ZU5vZGVOUyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpOwpAQCAt
MTc2LDcgKzE3Niw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxBdHRyPiBhdHRySWZFeGlzdHMo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIFJlZlB0cjxBdHRyPiBhdHRySWZFeGlzdHMoY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2Fz
ZSk7Ci0gICAgUmVmUHRyPEF0dHI+IGVuc3VyZUF0dHIoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIFJlZjxBdHRyPiBlbnN1cmVBdHRyKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8QXR0cj4+JiBhdHRyTm9kZUxpc3QoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydC5jcHAKaW5kZXggMmY1NjEyYWE3MGI1MWNkOTJmNWY5MzhlMTg5NzBhZjRmZTgz
ZmRlMC4uNWE4NGE0NGEyMDhhYmViZTQxM2I5OWYxMWU2ZjUwMTE5ZGE0MDJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBNZXNzYWdlUG9y
dDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShjaGFubmVscykpOwot
ICAgICAgICBSZWY8RXZlbnQ+IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShw
b3J0cyksIG1lc3NhZ2UucmVsZWFzZSgpKTsKKyAgICAgICAgUmVmPEV2ZW50PiBldmVudCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKICAg
ICAgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgfQogfQpAQCAtMjE0LDkgKzIxNCw5IEBA
IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cyhTY3JpcHRFeGVjdXRpb25Db250CiAKICAgICBhdXRvIHBvcnRBcnJheSA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVzc2FnZVBvcnRBcnJheT4oY2hhbm5lbHMtPnNpemUoKSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjaGFubmVscy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
UmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZShjb250ZXh0KTsK
KyAgICAgICAgYXV0byBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZShjb250ZXh0KTsKICAgICAg
ICAgcG9ydC0+ZW50YW5nbGUoV1RGTW92ZSgoKmNoYW5uZWxzKVtpXSkpOwotICAgICAgICAoKnBv
cnRBcnJheSlbaV0gPSBwb3J0LnJlbGVhc2UoKTsKKyAgICAgICAgKCpwb3J0QXJyYXkpW2ldID0g
V1RGTW92ZShwb3J0KTsKICAgICB9CiAgICAgcmV0dXJuIHBvcnRBcnJheTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVJdGVyYXRvci5jcHAKaW5kZXggYjU5ZTBmOWE1Mzg3NDI3ZTY1YzliMTNkMTI1NGY5
ZWE1M2YwYjRmZC4uM2M1YWJiMGY0M2FhYmU4NmJlOTBhOGRmNTVkMjdiZGU5MGRlYTkyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmUHRyPE5v
ZGU+IE5vZGVJdGVyYXRvcjo6bmV4dE5vZGUoKQogICAgICAgICBib29sIG5vZGVXYXNBY2NlcHRl
ZCA9IGFjY2VwdE5vZGUocHJvdmlzaW9uYWxSZXN1bHQuZ2V0KCkpID09IE5vZGVGaWx0ZXI6OkZJ
TFRFUl9BQ0NFUFQ7CiAgICAgICAgIGlmIChub2RlV2FzQWNjZXB0ZWQpIHsKICAgICAgICAgICAg
IG1fcmVmZXJlbmNlTm9kZSA9IG1fY2FuZGlkYXRlTm9kZTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHByb3Zpc2lvbmFsUmVzdWx0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IFdURk1v
dmUocHJvdmlzaW9uYWxSZXN1bHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xMTksNyArMTE5LDcgQEAgUmVmUHRyPE5vZGU+IE5vZGVJdGVyYXRvcjo6cHJldmlv
dXNOb2RlKCkKICAgICAgICAgYm9vbCBub2RlV2FzQWNjZXB0ZWQgPSBhY2NlcHROb2RlKHByb3Zp
c2lvbmFsUmVzdWx0LmdldCgpKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUOwogICAgICAg
ICBpZiAobm9kZVdhc0FjY2VwdGVkKSB7CiAgICAgICAgICAgICBtX3JlZmVyZW5jZU5vZGUgPSBt
X2NhbmRpZGF0ZU5vZGU7Ci0gICAgICAgICAgICByZXN1bHQgPSBwcm92aXNpb25hbFJlc3VsdC5y
ZWxlYXNlKCk7CisgICAgICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKHByb3Zpc2lvbmFsUmVzdWx0
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAK
aW5kZXggM2RjZjZhODNlNWU2Njg2ZjVhMDdlZWZkMzg4ODJiN2Q1OTgzMWVjMS4uZTRmMTFmYTUw
OTc0Zjc1NTBhNTBkZjM1OWE0Zjk2NzNiODgxMGZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC02
NzAsMTMgKzY3MCwxMyBAQCBSZWZQdHI8Tm9kZT4gUmFuZ2U6OnByb2Nlc3NDb250ZW50c0JldHdl
ZW5PZmZzZXRzKEFjdGlvblR5cGUgYWN0aW9uLCBQYXNzUmVmUHRyPAogICAgICAgICBlbmRPZmZz
ZXQgPSBzdGQ6Om1pbihlbmRPZmZzZXQsIHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEqPihjb250
YWluZXIpLT5sZW5ndGgoKSk7CiAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gc3RkOjptaW4oc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCk7CiAgICAgICAgIGlmIChhY3Rpb24gPT0gRXh0cmFjdCB8fCBhY3Rp
b24gPT0gQ2xvbmUpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDaGFyYWN0ZXJEYXRhPiBjID0gc3Rh
dGljX2Nhc3Q8Q2hhcmFjdGVyRGF0YSo+KGNvbnRhaW5lci0+Y2xvbmVOb2RlKHRydWUpLnB0cigp
KTsKLSAgICAgICAgICAgIGRlbGV0ZUNoYXJhY3RlckRhdGEoYywgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCwgZWMpOworICAgICAgICAgICAgUmVmUHRyPENoYXJhY3RlckRhdGE+IGNoYXJhY3RlcnMg
PSBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJEYXRhKj4oY29udGFpbmVyLT5jbG9uZU5vZGUodHJ1ZSku
cHRyKCkpOworICAgICAgICAgICAgZGVsZXRlQ2hhcmFjdGVyRGF0YShjaGFyYWN0ZXJzLCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0LCBlYyk7CiAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpIHsKICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBmcmFnbWVudDsKLSAgICAgICAgICAgICAgICByZXN1bHQt
PmFwcGVuZENoaWxkKGMucmVsZWFzZSgpLCBlYyk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5h
cHBlbmRDaGlsZChjaGFyYWN0ZXJzLnJlbGVhc2UoKSwgZWMpOwogICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gYy5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gV1RGTW92ZShjaGFyYWN0ZXJzKTsKICAgICAgICAgfQogICAgICAgICBpZiAoYWN0
aW9uID09IEV4dHJhY3QgfHwgYWN0aW9uID09IERlbGV0ZSkKICAgICAgICAgICAgIGRvd25jYXN0
PENoYXJhY3RlckRhdGE+KCpjb250YWluZXIpLmRlbGV0ZURhdGEoc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCAtIHN0YXJ0T2Zmc2V0LCBlYyk7CkBAIC02ODUsMTMgKzY4NSwxMyBAQCBSZWZQdHI8Tm9k
ZT4gUmFuZ2U6OnByb2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRzKEFjdGlvblR5cGUgYWN0aW9u
LCBQYXNzUmVmUHRyPAogICAgICAgICBlbmRPZmZzZXQgPSBzdGQ6Om1pbihlbmRPZmZzZXQsIHN0
YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KGNvbnRhaW5lciktPmRhdGEoKS5sZW5n
dGgoKSk7CiAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gc3RkOjptaW4oc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCk7CiAgICAgICAgIGlmIChhY3Rpb24gPT0gRXh0cmFjdCB8fCBhY3Rpb24gPT0gQ2xvbmUp
IHsKLSAgICAgICAgICAgIFJlZlB0cjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IGMgPSBzdGF0aWNf
Y2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihjb250YWluZXItPmNsb25lTm9kZSh0cnVlKS5w
dHIoKSk7Ci0gICAgICAgICAgICBjLT5zZXREYXRhKGMtPmRhdGEoKS5zdWJzdHJpbmcoc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCAtIHN0YXJ0T2Zmc2V0KSk7CisgICAgICAgICAgICBSZWZQdHI8UHJv
Y2Vzc2luZ0luc3RydWN0aW9uPiBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBzdGF0aWNfY2FzdDxQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihjb250YWluZXItPmNsb25lTm9kZSh0cnVlKS5wdHIoKSk7
CisgICAgICAgICAgICBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24tPnNldERhdGEocHJvY2Vzc2luZ0lu
c3RydWN0aW9uLT5kYXRhKCkuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSBzdGFy
dE9mZnNldCkpOwogICAgICAgICAgICAgaWYgKGZyYWdtZW50KSB7CiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gZnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmRDaGlsZChj
LnJlbGVhc2UoKSwgZWMpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kQ2hpbGQocHJv
Y2Vzc2luZ0luc3RydWN0aW9uLnJlbGVhc2UoKSwgZWMpOwogICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgcmVzdWx0ID0gYy5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gV1RGTW92ZShwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAg
IGlmIChhY3Rpb24gPT0gRXh0cmFjdCB8fCBhY3Rpb24gPT0gRGVsZXRlKSB7CiAgICAgICAgICAg
ICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24mIHBpID0gZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0
aW9uPigqY29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCBl
N2MzMjhhNDQwMTU0ZWQ0N2RlZDFiZjliNzg4YTdiYmRlNDA1NjMyLi4wMDNjNDFlZDZlMDQ2MTQz
NzNiOTY3OGI0NDdmODU0YTM3NTU2ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjpyZWJ1aWxkUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFByZXNlbnRhdGlv
bkF0dHJpYnV0ZUNhY2hlRW50cnk+IG5ld0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVzZW50
YXRpb25BdHRyaWJ1dGVDYWNoZUVudHJ5PigpOwogICAgIG5ld0VudHJ5LT5rZXkgPSBjYWNoZUtl
eTsKLSAgICBuZXdFbnRyeS0+dmFsdWUgPSBzdHlsZS5yZWxlYXNlKCk7CisgICAgbmV3RW50cnkt
PnZhbHVlID0gV1RGTW92ZShzdHlsZSk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IHByZXNlbnRh
dGlvbkF0dHJpYnV0ZUNhY2hlTWF4aW11bVNpemUgPSA0MDk2OwogICAgIGlmIChwcmVzZW50YXRp
b25BdHRyaWJ1dGVDYWNoZSgpLnNpemUoKSA+IHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlTWF4
aW11bVNpemUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9j
a0VsZW1lbnRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0Vs
ZW1lbnRDb21tYW5kLmNwcAppbmRleCAwNGM3ZDQyOTk1MDE2YjAyZmQzNWQ4MjA3ODIxY2RlOTU4
MmZhZDg0Li43ZWRhOGQzNzllMWI1YTA3MmUyOGJmZTNiNGZiM2FlM2ZkYWQ0MzM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3Bw
CkBAIC0yOTIsMTIgKzI5MiwxMiBAQCBWaXNpYmxlUG9zaXRpb24gQXBwbHlCbG9ja0VsZW1lbnRD
b21tYW5kOjplbmRPZk5leHRQYXJhZ3JhcGhTcGxpdHRpbmdUZXh0Tm9kZXNJZgogICAgIHJldHVy
biBQb3NpdGlvbih0ZXh0LmdldCgpLCBwb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSAt
IDEpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6
Y3JlYXRlQmxvY2tFbGVtZW50KCkKK1JlZjxIVE1MRWxlbWVudD4gQXBwbHlCbG9ja0VsZW1lbnRD
b21tYW5kOjpjcmVhdGVCbG9ja0VsZW1lbnQoKQogewotICAgIFJlZlB0cjxFbGVtZW50PiBlbGVt
ZW50ID0gY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgbV90YWdOYW1lKTsKKyAgICBhdXRv
IGVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudChkb2N1bWVudCgpLCBtX3RhZ05hbWUpOwogICAg
IGlmIChtX2lubGluZVN0eWxlLmxlbmd0aCgpKQogICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1
dGUoc3R5bGVBdHRyLCBtX2lubGluZVN0eWxlKTsKLSAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oCmluZGV4IGVmODdjMGQ3ZDVhY2Y3N2M0
NGFiOWRlMWJjZTQ1MDlkNWRiNzYwMGQuLmQzM2UzYzRmN2VmMjJmNmM1MDBjNTQwOWY2ZmE1Mjg0
YjE2NjE4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0Vs
ZW1lbnRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxl
bWVudENvbW1hbmQuaApAQCAtNDIsNyArNDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQXBwbHlCbG9j
a0VsZW1lbnRDb21tYW5kKERvY3VtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybWF0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgc3RhcnRPZlNlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRPZlNlbGVjdGlv
bik7Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVCbG9ja0VsZW1lbnQoKTsKKyAgICBS
ZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZUJsb2NrRWxlbWVudCgpOwogICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUgdGFnTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZTsgfQogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBhYzQ2
NDg4OWU5MWYzZjFlMDllZTA1YWM0NTFkZDJjZjU0ZGY5MTYxLi5iMTdkZWEwYWQ4YTdkZDlhODBj
ODVmOThlNDg3N2ZiZDU2MjAzNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcApAQCAtMzk4LDkgKzM5OCw5IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1h
bmQ6OmFwcGx5UmVsYXRpdmVGb250U3R5bGVDaGFuZ2UoRWRpdGluZ1N0eWxlKiBzdHlsZSkKICAg
ICAgICAgfSBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkgJiYgbm9kZS0+cmVuZGVyZXIoKSAm
JiBub2RlLT5wYXJlbnROb2RlKCkgIT0gbGFzdFN0eWxlZE5vZGUpIHsKICAgICAgICAgICAgIC8v
IExhc3Qgc3R5bGVkIG5vZGUgd2FzIG5vdCBwYXJlbnQgbm9kZSBvZiB0aGlzIHRleHQgbm9kZSwg
YnV0IHdlIHdpc2ggdG8gc3R5bGUgdGhpcwogICAgICAgICAgICAgLy8gdGV4dCBub2RlLiBUbyBt
YWtlIHRoaXMgcG9zc2libGUsIGFkZCBhIHN0eWxlIHNwYW4gdG8gc3Vycm91bmQgdGhpcyB0ZXh0
IG5vZGUuCi0gICAgICAgICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHNwYW4gPSBjcmVhdGVTdHls
ZVNwYW5FbGVtZW50KGRvY3VtZW50KCkpOworICAgICAgICAgICAgYXV0byBzcGFuID0gY3JlYXRl
U3R5bGVTcGFuRWxlbWVudChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIHN1cnJvdW5kTm9kZVJh
bmdlV2l0aEVsZW1lbnQobm9kZSwgbm9kZSwgc3Bhbi5nZXQoKSk7Ci0gICAgICAgICAgICBlbGVt
ZW50ID0gc3Bhbi5yZWxlYXNlKCk7CisgICAgICAgICAgICBlbGVtZW50ID0gV1RGTW92ZShzcGFu
KTsKICAgICAgICAgfSAgZWxzZSB7CiAgICAgICAgICAgICAvLyBPbmx5IGhhbmRsZSBIVE1MIGVs
ZW1lbnRzIGFuZCB0ZXh0IG5vZGVzLgogICAgICAgICAgICAgY29udGludWU7CkBAIC00MjIsNyAr
NDIyLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbnRTdHlsZUNo
YW5nZShFZGl0aW5nU3R5bGUqIHN0eWxlKQogICAgICAgICBpZiAoaW5saW5lU3R5bGUtPmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgcmVtb3ZlTm9kZUF0dHJpYnV0ZShlbGVtZW50LmdldCgpLCBz
dHlsZUF0dHIpOwogICAgICAgICAgICAgaWYgKGlzU3BhbldpdGhvdXRBdHRyaWJ1dGVzT3JVbnN0
eWxlZFN0eWxlU3BhbihlbGVtZW50LmdldCgpKSkKLSAgICAgICAgICAgICAgICB1bnN0eWxlZFNw
YW5zLmFwcGVuZChlbGVtZW50LnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgdW5zdHlsZWRT
cGFucy5hcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggNzcx
NjViZmI5YmNjZGZhMTU3NjQ4MDU1NjQ5YWI0ZWMxNGI5ZGIxNC4uNGRkMTc2NTRiYjUwMjFmZWUx
NzU5ODM2NDM2MjA5Y2E4M2M5ZTZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjphcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShQYXNzUmVmUHRyPEVkaXRDb21t
YW5kPiBwcnBDbwogICAgICAgICBjb21tYW5kLT5zZXRQYXJlbnQobnVsbHB0cik7CiAgICAgICAg
IGVuc3VyZUNvbXBvc2l0aW9uKCktPmFwcGVuZCh0b1NpbXBsZUVkaXRDb21tYW5kKGNvbW1hbmQu
Z2V0KCkpKTsKICAgICB9Ci0gICAgbV9jb21tYW5kcy5hcHBlbmQoY29tbWFuZC5yZWxlYXNlKCkp
OworICAgIG1fY29tbWFuZHMuYXBwZW5kKFdURk1vdmUoY29tbWFuZCkpOwogfQogCiB2b2lkIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShQYXNzUmVmUHRyPENv
bXBvc2l0ZUVkaXRDb21tYW5kPiBjb21tYW5kLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxl
Y3Rpb24pCkBAIC0xMDI0LDM1ICsxMDI0LDM1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
OmRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0RG93bnN0cmVhbShjb25zdCBQb3NpdGlvbiYgcG9zCiAg
ICAgZGVsZXRlSW5zaWduaWZpY2FudFRleHQocG9zLCBlbmQpOwogfQogCi1QYXNzUmVmUHRyPE5v
ZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBlbmRCbG9ja1BsYWNlaG9sZGVyKFBhc3NSZWZQ
dHI8RWxlbWVudD4gY29udGFpbmVyKQorUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5k
OjphcHBlbmRCbG9ja1BsYWNlaG9sZGVyKFBhc3NSZWZQdHI8RWxlbWVudD4gY29udGFpbmVyKQog
ewogICAgIGlmICghY29udGFpbmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOwogICAgIAogICAgIC8vIFNob3VsZCBhc3NlcnQgaXNCbG9ja0Zsb3cgfHwgaXNJ
bmxpbmVGbG93IHdoZW4gZGVsZXRpb24gaW1wcm92ZXMuIFNlZSA0MjQ0OTY0LgogICAgIEFTU0VS
VChjb250YWluZXItPnJlbmRlcmVyKCkpOwogCi0gICAgUmVmUHRyPE5vZGU+IHBsYWNlaG9sZGVy
ID0gY3JlYXRlQmxvY2tQbGFjZWhvbGRlckVsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgYXBwZW5k
Tm9kZShwbGFjZWhvbGRlciwgY29udGFpbmVyKTsKLSAgICByZXR1cm4gcGxhY2Vob2xkZXIucmVs
ZWFzZSgpOworICAgIGF1dG8gcGxhY2Vob2xkZXIgPSBjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxl
bWVudChkb2N1bWVudCgpKTsKKyAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLnB0cigpLCBjb250
YWluZXIpOworICAgIHJldHVybiBXVEZNb3ZlKHBsYWNlaG9sZGVyKTsKIH0KIAotUGFzc1JlZlB0
cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0QmxvY2tQbGFjZWhvbGRlcihjb25z
dCBQb3NpdGlvbiYgcG9zKQorUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNl
cnRCbG9ja1BsYWNlaG9sZGVyKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiB7CiAgICAgaWYgKHBvcy5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gU2hvdWxkIGFzc2VydCBpc0Jsb2NrRmxvdyB8fCBpc0lubGluZUZsb3cgd2hlbiBkZWxl
dGlvbiBpbXByb3Zlcy4gIFNlZSA0MjQ0OTY0LgogICAgIEFTU0VSVChwb3MuZGVwcmVjYXRlZE5v
ZGUoKS0+cmVuZGVyZXIoKSk7CiAKLSAgICBSZWZQdHI8Tm9kZT4gcGxhY2Vob2xkZXIgPSBjcmVh
dGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudChkb2N1bWVudCgpKTsKLSAgICBpbnNlcnROb2RlQXQo
cGxhY2Vob2xkZXIsIHBvcyk7Ci0gICAgcmV0dXJuIHBsYWNlaG9sZGVyLnJlbGVhc2UoKTsKKyAg
ICBhdXRvIHBsYWNlaG9sZGVyID0gY3JlYXRlQmxvY2tQbGFjZWhvbGRlckVsZW1lbnQoZG9jdW1l
bnQoKSk7CisgICAgaW5zZXJ0Tm9kZUF0KHBsYWNlaG9sZGVyLnB0cigpLCBwb3MpOworICAgIHJl
dHVybiBXVEZNb3ZlKHBsYWNlaG9sZGVyKTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6YWRkQmxvY2tQbGFjZWhvbGRlcklmTmVlZGVkKEVsZW1lbnQqIGNvbnRh
aW5lcikKK1JlZlB0cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YWRkQmxvY2tQbGFjZWhv
bGRlcklmTmVlZGVkKEVsZW1lbnQqIGNvbnRhaW5lcikKIHsKICAgICBpZiAoIWNvbnRhaW5lcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDg2LDE3ICsxMDg2LDE3IEBAIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZVBsYWNlaG9sZGVyQXQoY29uc3QgUG9zaXRpb24mIHAp
CiAgICAgZGVsZXRlVGV4dEZyb21Ob2RlKGRvd25jYXN0PFRleHQ+KHAuYW5jaG9yTm9kZSgpKSwg
cC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgMSk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gQ29t
cG9zaXRlRWRpdENvbW1hbmQ6Omluc2VydE5ld0RlZmF1bHRQYXJhZ3JhcGhFbGVtZW50QXQoY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKQorUmVmPEhUTUxFbGVtZW50PiBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6aW5zZXJ0TmV3RGVmYXVsdFBhcmFncmFwaEVsZW1lbnRBdChjb25zdCBQb3NpdGlvbiYg
cG9zaXRpb24pCiB7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHBhcmFncmFwaEVsZW1lbnQgPSBjcmVh
dGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCgpKTsKKyAgICBhdXRvIHBhcmFncmFw
aEVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCgpKTsKICAg
ICBwYXJhZ3JhcGhFbGVtZW50LT5hcHBlbmRDaGlsZChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1l
bnQoKSksIElHTk9SRV9FWENFUFRJT04pOwotICAgIGluc2VydE5vZGVBdChwYXJhZ3JhcGhFbGVt
ZW50LCBwb3NpdGlvbik7Ci0gICAgcmV0dXJuIHBhcmFncmFwaEVsZW1lbnQucmVsZWFzZSgpOwor
ICAgIGluc2VydE5vZGVBdChwYXJhZ3JhcGhFbGVtZW50LnB0cigpLCBwb3NpdGlvbik7CisgICAg
cmV0dXJuIHBhcmFncmFwaEVsZW1lbnQ7CiB9CiAKIC8vIElmIHRoZSBwYXJhZ3JhcGggaXMgbm90
IGVudGlyZWx5IHdpdGhpbiBpdCdzIG93biBibG9jaywgY3JlYXRlIG9uZSBhbmQgbW92ZSB0aGUg
cGFyYWdyYXBoIGludG8gCiAvLyBpdCwgYW5kIHJldHVybiB0aGF0IGJsb2NrLiAgT3RoZXJ3aXNl
IHJldHVybiAwLgotUGFzc1JlZlB0cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBh
cmFncmFwaENvbnRlbnRzVG9OZXdCbG9ja0lmTmVjZXNzYXJ5KGNvbnN0IFBvc2l0aW9uJiBwb3Mp
CitSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhDb250ZW50
c1RvTmV3QmxvY2tJZk5lY2Vzc2FyeShjb25zdCBQb3NpdGlvbiYgcG9zKQogewogICAgIGlmIChw
b3MuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE0OCwxNiArMTE0OCwx
NiBAQCBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBo
Q29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3NhcgogICAgIC8vIElmIHVwc3RyZWFtU3RhcnQgaXMg
bm90IGVkaXRhYmxlLCB0aGVuIHdlIGNhbiBiYWlsIGhlcmUuCiAgICAgaWYgKCFpc0VkaXRhYmxl
UG9zaXRpb24odXBzdHJlYW1TdGFydCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJl
ZlB0cjxOb2RlPiBuZXdCbG9jayA9IGluc2VydE5ld0RlZmF1bHRQYXJhZ3JhcGhFbGVtZW50QXQo
dXBzdHJlYW1TdGFydCk7CisgICAgYXV0byBuZXdCbG9jayA9IGluc2VydE5ld0RlZmF1bHRQYXJh
Z3JhcGhFbGVtZW50QXQodXBzdHJlYW1TdGFydCk7CiAKICAgICBib29sIGVuZFdhc0JyID0gdmlz
aWJsZVBhcmFncmFwaEVuZC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmhhc1Rh
Z05hbWUoYnJUYWcpOwogCi0gICAgbW92ZVBhcmFncmFwaHModmlzaWJsZVBhcmFncmFwaFN0YXJ0
LCB2aXNpYmxlUGFyYWdyYXBoRW5kLCBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbkluTm9k
ZShuZXdCbG9jay5nZXQoKSkpKTsKKyAgICBtb3ZlUGFyYWdyYXBocyh2aXNpYmxlUGFyYWdyYXBo
U3RhcnQsIHZpc2libGVQYXJhZ3JhcGhFbmQsIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9u
SW5Ob2RlKG5ld0Jsb2NrLnB0cigpKSkpOwogCiAgICAgaWYgKG5ld0Jsb2NrLT5sYXN0Q2hpbGQo
KSAmJiBuZXdCbG9jay0+bGFzdENoaWxkKCktPmhhc1RhZ05hbWUoYnJUYWcpICYmICFlbmRXYXNC
cikKICAgICAgICAgcmVtb3ZlTm9kZShuZXdCbG9jay0+bGFzdENoaWxkKCkpOwogCi0gICAgcmV0
dXJuIG5ld0Jsb2NrLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShuZXdCbG9jayk7CiB9
CiAKIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnB1c2hBbmNob3JFbGVtZW50RG93bihFbGVt
ZW50JiBhbmNob3JFbGVtZW50KQpAQCAtMTIwMCw5ICsxMjAwLDkgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6Y2xvbmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1lbnQoY29uc3QgUG9zaXRpb24m
IHN0YXJ0LAogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpICE9
IDA7IC0taSkgewogICAgICAgICAgICAgTm9kZSogaXRlbSA9IGFuY2VzdG9yc1tpIC0gMV0uZ2V0
KCk7Ci0gICAgICAgICAgICBSZWZQdHI8Tm9kZT4gY2hpbGQgPSBpdGVtLT5jbG9uZU5vZGUoaXNS
ZW5kZXJlZFRhYmxlKGl0ZW0pKTsKLSAgICAgICAgICAgIGFwcGVuZE5vZGUoY2hpbGQsIGRvd25j
YXN0PEVsZW1lbnQ+KGxhc3ROb2RlLmdldCgpKSk7Ci0gICAgICAgICAgICBsYXN0Tm9kZSA9IGNo
aWxkLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGF1dG8gY2hpbGQgPSBpdGVtLT5jbG9uZU5vZGUo
aXNSZW5kZXJlZFRhYmxlKGl0ZW0pKTsKKyAgICAgICAgICAgIGFwcGVuZE5vZGUoY2hpbGQucHRy
KCksIGRvd25jYXN0PEVsZW1lbnQ+KGxhc3ROb2RlLmdldCgpKSk7CisgICAgICAgICAgICBsYXN0
Tm9kZSA9IFdURk1vdmUoY2hpbGQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjI3LDkgKzEy
MjcsOSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpjbG9uZVBhcmFncmFwaFVuZGVyTmV3
RWxlbWVudChjb25zdCBQb3NpdGlvbiYgc3RhcnQsCiAgICAgICAgICAgICAgICAgbGFzdE5vZGUg
PSBsYXN0Tm9kZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBS
ZWZQdHI8Tm9kZT4gY2xvbmVkTm9kZSA9IG5vZGUtPmNsb25lTm9kZSh0cnVlKTsKLSAgICAgICAg
ICAgIGluc2VydE5vZGVBZnRlcihjbG9uZWROb2RlLCBsYXN0Tm9kZSk7Ci0gICAgICAgICAgICBs
YXN0Tm9kZSA9IGNsb25lZE5vZGUucmVsZWFzZSgpOworICAgICAgICAgICAgYXV0byBjbG9uZWRO
b2RlID0gbm9kZS0+Y2xvbmVOb2RlKHRydWUpOworICAgICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVy
KGNsb25lZE5vZGUucHRyKCksIGxhc3ROb2RlKTsKKyAgICAgICAgICAgIGxhc3ROb2RlID0gV1RG
TW92ZShjbG9uZWROb2RlKTsKICAgICAgICAgICAgIGlmIChub2RlID09IGVuZC5kZXByZWNhdGVk
Tm9kZSgpIHx8IGVuZC5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihub2RlLmdldCgp
KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTY0Nyw3ICsxNjQ3LDcg
QEAgUG9zaXRpb24gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnBvc2l0aW9uQXZvaWRpbmdTcGVjaWFs
RWxlbWVudEJvdW5kYXJ5KGNvbnN0IFBvc2kKIAogLy8gU3BsaXRzIHRoZSB0cmVlIHBhcmVudCBi
eSBwYXJlbnQgdW50aWwgd2UgcmVhY2ggdGhlIHNwZWNpZmllZCBhbmNlc3Rvci4gV2UgdXNlIFZp
c2libGVQb3NpdGlvbnMKIC8vIHRvIGRldGVybWluZSBpZiB0aGUgc3BsaXQgaXMgbmVjZXNzYXJ5
LiBSZXR1cm5zIHRoZSBsYXN0IHNwbGl0IG5vZGUuCi1QYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0
ZUVkaXRDb21tYW5kOjpzcGxpdFRyZWVUb05vZGUoTm9kZSogc3RhcnQsIE5vZGUqIGVuZCwgYm9v
bCBzaG91bGRTcGxpdEFuY2VzdG9yKQorUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5k
OjpzcGxpdFRyZWVUb05vZGUoTm9kZSogc3RhcnQsIE5vZGUqIGVuZCwgYm9vbCBzaG91bGRTcGxp
dEFuY2VzdG9yKQogewogICAgIEFTU0VSVChzdGFydCk7CiAgICAgQVNTRVJUKGVuZCk7CkBAIC0x
NjY4LDcgKzE2NjgsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpz
cGxpdFRyZWVUb05vZGUoTm9kZSogc3RhcnQsIE5vZGUqIGVuZCwgYgogICAgICAgICAgICAgc3Bs
aXRFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUtPnBhcmVudE5vZGUoKSksIG5vZGUpOwog
ICAgIH0KIAotICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbm9kZTsKIH0K
IAogUmVmPEVsZW1lbnQ+IGNyZWF0ZUJsb2NrUGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50JiBk
b2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
aAppbmRleCA5MTMzOThkYzc4NjJjYzMwMjUwZjc1NzExMDE3NmI1Y2E0ZDYwYzNiLi40ZWUyYWUx
YzQzZWIwY2UxZTU2MTc3MmFiMzY0MDBjZGYwNTNmYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC0xNzAsMTQgKzE3MCwxNCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBkZWxldGVJbnNpZ25pZmljYW50VGV4dChjb25zdCBQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIHZvaWQgZGVsZXRlSW5zaWduaWZpY2Fu
dFRleHREb3duc3RyZWFtKGNvbnN0IFBvc2l0aW9uJik7CiAKLSAgICBQYXNzUmVmUHRyPE5vZGU+
IGFwcGVuZEJsb2NrUGxhY2Vob2xkZXIoUGFzc1JlZlB0cjxFbGVtZW50Pik7Ci0gICAgUGFzc1Jl
ZlB0cjxOb2RlPiBpbnNlcnRCbG9ja1BsYWNlaG9sZGVyKGNvbnN0IFBvc2l0aW9uJik7Ci0gICAg
UGFzc1JlZlB0cjxOb2RlPiBhZGRCbG9ja1BsYWNlaG9sZGVySWZOZWVkZWQoRWxlbWVudCopOwor
ICAgIFJlZlB0cjxOb2RlPiBhcHBlbmRCbG9ja1BsYWNlaG9sZGVyKFBhc3NSZWZQdHI8RWxlbWVu
dD4pOworICAgIFJlZlB0cjxOb2RlPiBpbnNlcnRCbG9ja1BsYWNlaG9sZGVyKGNvbnN0IFBvc2l0
aW9uJik7CisgICAgUmVmUHRyPE5vZGU+IGFkZEJsb2NrUGxhY2Vob2xkZXJJZk5lZWRlZChFbGVt
ZW50Kik7CiAgICAgdm9pZCByZW1vdmVQbGFjZWhvbGRlckF0KGNvbnN0IFBvc2l0aW9uJik7CiAK
LSAgICBQYXNzUmVmUHRyPE5vZGU+IGluc2VydE5ld0RlZmF1bHRQYXJhZ3JhcGhFbGVtZW50QXQo
Y29uc3QgUG9zaXRpb24mKTsKKyAgICBSZWY8SFRNTEVsZW1lbnQ+IGluc2VydE5ld0RlZmF1bHRQ
YXJhZ3JhcGhFbGVtZW50QXQoY29uc3QgUG9zaXRpb24mKTsKIAotICAgIFBhc3NSZWZQdHI8Tm9k
ZT4gbW92ZVBhcmFncmFwaENvbnRlbnRzVG9OZXdCbG9ja0lmTmVjZXNzYXJ5KGNvbnN0IFBvc2l0
aW9uJik7CisgICAgUmVmUHRyPE5vZGU+IG1vdmVQYXJhZ3JhcGhDb250ZW50c1RvTmV3QmxvY2tJ
Zk5lY2Vzc2FyeShjb25zdCBQb3NpdGlvbiYpOwogICAgIAogICAgIHZvaWQgcHVzaEFuY2hvckVs
ZW1lbnREb3duKEVsZW1lbnQmKTsKICAgICAKQEAgLTE5Miw3ICsxOTIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgCiAgICAgUG9zaXRpb24gcG9zaXRpb25Bdm9pZGluZ1NwZWNpYWxFbGVtZW50Qm91bmRh
cnkoY29uc3QgUG9zaXRpb24mKTsKICAgICAKLSAgICBQYXNzUmVmUHRyPE5vZGU+IHNwbGl0VHJl
ZVRvTm9kZShOb2RlKiwgTm9kZSosIGJvb2wgc3BsaXRBbmNlc3RvciA9IGZhbHNlKTsKKyAgICBS
ZWZQdHI8Tm9kZT4gc3BsaXRUcmVlVG9Ob2RlKE5vZGUqLCBOb2RlKiwgYm9vbCBzcGxpdEFuY2Vz
dG9yID0gZmFsc2UpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxFZGl0Q29tbWFuZD4+IG1fY29tbWFu
ZHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCAxODlkNTgw
M2RhMjExOTRhMTI1YjI0NmQ1YTY4MGY2Mzg4MTQ2YTkzLi41MDhmZTc0MzhmMzNjNTA5NWE2MjIz
Y2UxNGRkZjgwOTUyNDMxMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgZW51bSBMZWdhY3lGb250U2l6ZU1vZGUgeyBBbHdheXNV
c2VMZWdhY3lGb250U2l6ZSwgVXNlTGVnYWN5Rm9udFNpemVPbmx5SWZQaXhlbFYKIHN0YXRpYyBp
bnQgbGVnYWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUoRG9jdW1lbnQqLCBDU1NQcmltaXRpdmVWYWx1
ZSosIGJvb2wgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUsIExlZ2FjeUZvbnRTaXplTW9k
ZSk7CiBzdGF0aWMgYm9vbCBpc1RyYW5zcGFyZW50Q29sb3JWYWx1ZShDU1NWYWx1ZSopOwogc3Rh
dGljIGJvb2wgaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3IoU3R5bGVQcm9wZXJ0aWVzKik7
Ci1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gYmFja2dyb3VuZENvbG9ySW5FZmZlY3QoTm9k
ZSopOworc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gYmFja2dyb3VuZENvbG9ySW5FZmZlY3QoTm9k
ZSopOwogCiBjbGFzcyBIVE1MRWxlbWVudEVxdWl2YWxlbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtMTE4NSwxMSArMTE4NSwxMCBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVy
Z2VJbmxpbmVBbmRJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQs
CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEVkaXRpbmdTdHlsZT4gRWRpdGluZ1N0eWxlOjp3cmFw
cGluZ1N0eWxlRm9yU2VyaWFsaXphdGlvbihOb2RlKiBjb250ZXh0LCBib29sIHNob3VsZEFubm90
YXRlKQorUmVmPEVkaXRpbmdTdHlsZT4gRWRpdGluZ1N0eWxlOjp3cmFwcGluZ1N0eWxlRm9yU2Vy
aWFsaXphdGlvbihOb2RlKiBjb250ZXh0LCBib29sIHNob3VsZEFubm90YXRlKQogewotICAgIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IHdyYXBwaW5nU3R5bGU7CiAgICAgaWYgKHNob3VsZEFubm90YXRl
KSB7Ci0gICAgICAgIHdyYXBwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShjb250ZXh0
LCBFZGl0aW5nU3R5bGU6OkVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgICAgICBhdXRv
IHdyYXBwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShjb250ZXh0LCBFZGl0aW5nU3R5
bGU6OkVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwogCiAgICAgICAgIC8vIFN0eWxlcyB0aGF0
IE1haWwgYmxvY2txdW90ZXMgY29udHJpYnV0ZSBzaG91bGQgb25seSBiZSBwbGFjZWQgb24gdGhl
IE1haWwgYmxvY2txdW90ZSwKICAgICAgICAgLy8gdG8gaGVscCB1cyBkaWZmZXJlbnRpYXRlIHRo
b3NlIHN0eWxlcyBmcm9tIG9uZXMgdGhhdCB0aGUgdXNlciBoYXMgYXBwbGllZC4KQEAgLTExOTks
MTAgKzExOTgsMTAgQEAgUGFzc1JlZlB0cjxFZGl0aW5nU3R5bGU+IEVkaXRpbmdTdHlsZTo6d3Jh
cHBpbmdTdHlsZUZvclNlcmlhbGl6YXRpb24oTm9kZSogY29udGUKICAgICAgICAgLy8gQ2FsbCBj
b2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyBmaXJzdCBvciBvdGhlcndpc2UgaXQnbGwg
Y29weSB0aGUgdmFsdWUgb3ZlciBmcm9tIGluLWVmZmVjdCB0byB0ZXh0LWRlY29yYXRpb25zLgog
ICAgICAgICB3cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcygp
OwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdyYXBwaW5nU3R5bGUucmVsZWFzZSgpOworICAg
ICAgICByZXR1cm4gd3JhcHBpbmdTdHlsZTsKICAgICB9CiAKLSAgICB3cmFwcGluZ1N0eWxlID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKyAgICBhdXRvIHdyYXBwaW5nU3R5bGUgPSBFZGl0aW5n
U3R5bGU6OmNyZWF0ZSgpOwogCiAgICAgLy8gV2hlbiBub3QgYW5ub3RhdGluZyBmb3IgaW50ZXJj
aGFuZ2UsIHdlIG9ubHkgcHJlc2VydmUgaW5saW5lIHN0eWxlIGRlY2xhcmF0aW9ucy4KICAgICBm
b3IgKE5vZGUqIG5vZGUgPSBjb250ZXh0OyBub2RlICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgp
OyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CkBAIC0xMjEyLDcgKzEyMTEsNyBAQCBQYXNz
UmVmUHRyPEVkaXRpbmdTdHlsZT4gRWRpdGluZ1N0eWxlOjp3cmFwcGluZ1N0eWxlRm9yU2VyaWFs
aXphdGlvbihOb2RlKiBjb250ZQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHdyYXBw
aW5nU3R5bGUucmVsZWFzZSgpOworICAgIHJldHVybiB3cmFwcGluZ1N0eWxlOwogfQogCiAKQEAg
LTEyNjUsMTUgKzEyNjQsMTUgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGUoY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgQ1NTUHJvcGVydHlPdmVycmlkZU0KICAgICBtX2ZvbnRT
aXplRGVsdGEgKz0gb2xkRm9udFNpemVEZWx0YTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVt
ZW50KiBlbGVtZW50LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKK3N0YXRpYyBSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVtZW50
KiBlbGVtZW50LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKIHsKLSAgICBSZWZQdHI8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUo
KTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IGVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIoKS5zdHls
ZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBydWxlc1RvSW5jbHVkZSkpIHsKICAgICAgICAgaWYg
KG1hdGNoZWRSdWxlLT5pc1N0eWxlUnVsZSgpKQogICAgICAgICAgICAgc3R5bGUtPm1lcmdlQW5k
T3ZlcnJpZGVPbkNvbmZsaWN0KHN0YXRpY19wb2ludGVyX2Nhc3Q8U3R5bGVSdWxlPihtYXRjaGVk
UnVsZSktPnByb3BlcnRpZXMoKSk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBzdHlsZS5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIHN0eWxlOwogfQogCiB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VT
dHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50KiBlbGVtZW50KQpAQCAtMTc3MywzMCArMTc3Miwz
MSBAQCBzdGF0aWMgYm9vbCBmb250V2VpZ2h0SXNCb2xkKFQmIHN0eWxlKQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotc3RhdGljIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
ZXh0cmFjdFByb3BlcnRpZXNOb3RJbihTdHlsZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFu
dFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSkKK3N0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gZXh0cmFjdFByb3BlcnRpZXNOb3RJbihTdHlsZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJl
ZHVuZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSkKIHsKICAgICBSZWZQdHI8RWRpdGluZ1N0
eWxlPiByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJv
cGVydGllcyk7CiAgICAgcmVzdWx0LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhiYXNlU3R5
bGUpOwotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlU3R5bGUgPSBy
ZXN1bHQtPnN0eWxlKCk7CisgICAgQVNTRVJUKHJlc3VsdC0+c3R5bGUoKSk7CisgICAgUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZSA9ICpyZXN1bHQtPnN0eWxlKCk7CiAK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IGJhc2VUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCA9IGV4dHJh
Y3RQcm9wZXJ0eVZhbHVlKGJhc2VTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCk7Ci0gICAgZGlmZlRleHREZWNvcmF0aW9ucygqbXV0YWJsZVN0eWxlLCBDU1NQ
cm9wZXJ0eVRleHREZWNvcmF0aW9uLCBiYXNlVGV4dERlY29yYXRpb25zSW5FZmZlY3QuZ2V0KCkp
OwotICAgIGRpZmZUZXh0RGVjb3JhdGlvbnMoKm11dGFibGVTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0Lmdl
dCgpKTsKKyAgICBkaWZmVGV4dERlY29yYXRpb25zKG11dGFibGVTdHlsZSwgQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvbiwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsKKyAgICBk
aWZmVGV4dERlY29yYXRpb25zKG11dGFibGVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsKIAot
ICAgIGlmIChleHRyYWN0UHJvcGVydHlWYWx1ZShiYXNlU3R5bGUsIENTU1Byb3BlcnR5Rm9udFdl
aWdodCkgJiYgZm9udFdlaWdodElzQm9sZCgqbXV0YWJsZVN0eWxlKSA9PSBmb250V2VpZ2h0SXNC
b2xkKGJhc2VTdHlsZSkpCisgICAgaWYgKGV4dHJhY3RQcm9wZXJ0eVZhbHVlKGJhc2VTdHlsZSwg
Q1NTUHJvcGVydHlGb250V2VpZ2h0KSAmJiBmb250V2VpZ2h0SXNCb2xkKG11dGFibGVTdHlsZSkg
PT0gZm9udFdlaWdodElzQm9sZChiYXNlU3R5bGUpKQogICAgICAgICBtdXRhYmxlU3R5bGUtPnJl
bW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCk7CiAKLSAgICBpZiAoZXh0cmFjdFBy
b3BlcnR5VmFsdWUoYmFzZVN0eWxlLCBDU1NQcm9wZXJ0eUNvbG9yKSAmJiB0ZXh0Q29sb3JGcm9t
U3R5bGUoKm11dGFibGVTdHlsZSkgPT0gdGV4dENvbG9yRnJvbVN0eWxlKGJhc2VTdHlsZSkpCisg
ICAgaWYgKGV4dHJhY3RQcm9wZXJ0eVZhbHVlKGJhc2VTdHlsZSwgQ1NTUHJvcGVydHlDb2xvcikg
JiYgdGV4dENvbG9yRnJvbVN0eWxlKG11dGFibGVTdHlsZSkgPT0gdGV4dENvbG9yRnJvbVN0eWxl
KGJhc2VTdHlsZSkpCiAgICAgICAgIG11dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJv
cGVydHlDb2xvcik7CiAKICAgICBpZiAoZXh0cmFjdFByb3BlcnR5VmFsdWUoYmFzZVN0eWxlLCBD
U1NQcm9wZXJ0eVRleHRBbGlnbikKLSAgICAgICAgJiYgdGV4dEFsaWduUmVzb2x2aW5nU3RhcnRB
bmRFbmQoKm11dGFibGVTdHlsZSkgPT0gdGV4dEFsaWduUmVzb2x2aW5nU3RhcnRBbmRFbmQoYmFz
ZVN0eWxlKSkKKyAgICAgICAgJiYgdGV4dEFsaWduUmVzb2x2aW5nU3RhcnRBbmRFbmQobXV0YWJs
ZVN0eWxlKSA9PSB0ZXh0QWxpZ25SZXNvbHZpbmdTdGFydEFuZEVuZChiYXNlU3R5bGUpKQogICAg
ICAgICBtdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduKTsK
IAotICAgIGlmIChleHRyYWN0UHJvcGVydHlWYWx1ZShiYXNlU3R5bGUsIENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKSAmJiBiYWNrZ3JvdW5kQ29sb3JGcm9tU3R5bGUoKm11dGFibGVTdHlsZSkg
PT0gYmFja2dyb3VuZENvbG9yRnJvbVN0eWxlKGJhc2VTdHlsZSkpCisgICAgaWYgKGV4dHJhY3RQ
cm9wZXJ0eVZhbHVlKGJhc2VTdHlsZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpICYmIGJh
Y2tncm91bmRDb2xvckZyb21TdHlsZShtdXRhYmxlU3R5bGUpID09IGJhY2tncm91bmRDb2xvckZy
b21TdHlsZShiYXNlU3R5bGUpKQogICAgICAgICBtdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAotICAgIHJldHVybiBtdXRhYmxlU3R5bGUu
cmVsZWFzZSgpOworICAgIHJldHVybiBtdXRhYmxlU3R5bGU7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CkBAIC0xODQ5LDE1ICsxODQ5LDE1IEBAIGJvb2wgaGFzVHJhbnNwYXJlbnRCYWNrZ3Jv
dW5kQ29sb3IoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSkKICAgICByZXR1cm4gaXNUcmFuc3BhcmVu
dENvbG9yVmFsdWUoY3NzVmFsdWUuZ2V0KCkpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBi
YWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChOb2RlKiBub2RlKQorUmVmUHRyPENTU1ZhbHVlPiBiYWNr
Z3JvdW5kQ29sb3JJbkVmZmVjdChOb2RlKiBub2RlKQogewogICAgIGZvciAoTm9kZSogYW5jZXN0
b3IgPSBub2RlOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50Tm9kZSgpKSB7
CiAgICAgICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJh
Y3RvcihhbmNlc3RvcikucHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikp
IHsKICAgICAgICAgICAgIGlmICghaXNUcmFuc3BhcmVudENvbG9yVmFsdWUodmFsdWUuZ2V0KCkp
KQotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZWxlYXNlKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaApp
bmRleCBmNGQyMDg1MzhmMjYyMGExZWM2Y2RjNDcwMGFlMDg0ZjdjNjIxNzc1Li43YzJjOTIyYTM2
MThiYTY5NmUzYzk3MzU5Yzk3ZmMyNWJiNGVhN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmgKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZXJnZVR5
cGluZ1N0eWxlKERvY3VtZW50Jik7CiAgICAgZW51bSBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9kZSB7
IE92ZXJyaWRlVmFsdWVzLCBEb05vdE92ZXJyaWRlVmFsdWVzIH07CiAgICAgdm9pZCBtZXJnZUlu
bGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqLCBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9k
ZSwgUHJvcGVydGllc1RvSW5jbHVkZSA9IEFsbFByb3BlcnRpZXMpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEVkaXRpbmdTdHlsZT4gd3JhcHBpbmdTdHlsZUZvclNlcmlhbGl6YXRpb24oTm9kZSog
Y29udGV4dCwgYm9vbCBzaG91bGRBbm5vdGF0ZSk7CisgICAgc3RhdGljIFJlZjxFZGl0aW5nU3R5
bGU+IHdyYXBwaW5nU3R5bGVGb3JTZXJpYWxpemF0aW9uKE5vZGUqIGNvbnRleHQsIGJvb2wgc2hv
dWxkQW5ub3RhdGUpOwogICAgIHZvaWQgbWVyZ2VTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50
Kik7CiAgICAgdm9pZCBtZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRF
bGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVk
RWxlbWVudCosIE5vZGUqIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDYyZDA2ZjllNmI2M2NmOTk2NjMzNGJjMTFhZDVkYTZiY2FhOTQ3OGYuLjhkMDQ1N2E4N2RmNDll
NjMwNjgxNGI1OWJiYjMyNzIzNDBjMjEyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTc5OSwzNCArNzk5LDM0IEBAIGJvb2wgRWRpdG9yOjpjYW5EZWNyZWFzZVNlbGVjdGlvbkxp
c3RMZXZlbCgpCiAgICAgcmV0dXJuIGNhbkVkaXRSaWNobHkoKSAmJiBEZWNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbENvbW1hbmQ6OmNhbkRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCZkb2N1bWVu
dCgpKTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBFZGl0b3I6OmluY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsKCkKK1JlZlB0cjxOb2RlPiBFZGl0b3I6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVs
KCkKIHsKICAgICBpZiAoIWNhbkVkaXRSaWNobHkoKSB8fCBtX2ZyYW1lLnNlbGVjdGlvbigpLmlz
Tm9uZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
CiAgICAgUmVmUHRyPE5vZGU+IG5ld0xpc3QgPSBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENv
bW1hbmQ6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCZkb2N1bWVudCgpKTsKICAgICByZXZl
YWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oKTsKICAgICByZXR1cm4gbmV3TGlzdDsK
IH0KIAotUGFzc1JlZlB0cjxOb2RlPiBFZGl0b3I6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVs
T3JkZXJlZCgpCitSZWZQdHI8Tm9kZT4gRWRpdG9yOjppbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZl
bE9yZGVyZWQoKQogewogICAgIGlmICghY2FuRWRpdFJpY2hseSgpIHx8IG1fZnJhbWUuc2VsZWN0
aW9uKCkuaXNOb25lKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKICAgICBSZWZQdHI8Tm9kZT4gbmV3TGlzdCA9IEluY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsQ29tbWFuZDo6aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkKCZkb2N1bWVu
dCgpKTsKICAgICByZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oKTsKLSAgICBy
ZXR1cm4gbmV3TGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ld0xpc3Q7CiB9CiAKLVBhc3NS
ZWZQdHI8Tm9kZT4gRWRpdG9yOjppbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJlZCgp
CitSZWZQdHI8Tm9kZT4gRWRpdG9yOjppbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJl
ZCgpCiB7CiAgICAgaWYgKCFjYW5FZGl0UmljaGx5KCkgfHwgbV9mcmFtZS5zZWxlY3Rpb24oKS5p
c05vbmUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAogICAgIFJlZlB0cjxOb2RlPiBuZXdMaXN0ID0gSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxD
b21tYW5kOjppbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJlZCgmZG9jdW1lbnQoKSk7
CiAgICAgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJu
IG5ld0xpc3QucmVsZWFzZSgpOworICAgIHJldHVybiBuZXdMaXN0OwogfQogCiB2b2lkIEVkaXRv
cjo6ZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKQpAQCAtMzEzOCwyMiArMzEzOCwyMiBAQCBi
b29sIEVkaXRvcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMg
b3B0aW9ucykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9y
OjpmaW5kU3RyaW5nQW5kU2Nyb2xsVG9WaXNpYmxlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5n
ZSogcHJldmlvdXNNYXRjaCwgRmluZE9wdGlvbnMgb3B0aW9ucykKK1JlZlB0cjxSYW5nZT4gRWRp
dG9yOjpmaW5kU3RyaW5nQW5kU2Nyb2xsVG9WaXNpYmxlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBS
YW5nZSogcHJldmlvdXNNYXRjaCwgRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8
UmFuZ2U+IG5leHRNYXRjaCA9IHJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBwcmV2aW91c01hdGNoLCBv
cHRpb25zKTsKICAgICBpZiAoIW5leHRNYXRjaCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgbmV4dE1hdGNoLT5maXJzdE5vZGUoKS0+cmVuZGVyZXIo
KS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShuZXh0TWF0Y2gtPmFic29sdXRlQm91bmRpbmdCb3goKSwK
ICAgICAgICAgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBTY3JvbGxBbGln
bm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQpOwogCi0gICAgcmV0dXJuIG5leHRNYXRjaC5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIG5leHRNYXRjaDsKIH0KIAotUGFzc1JlZlB0cjxSYW5nZT4gRWRp
dG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNl
UmFuZ2UsIEZpbmRPcHRpb25zIG9wdGlvbnMpCitSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VP
ZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgUmFuZ2UqIHJlZmVyZW5jZVJhbmdlLCBGaW5k
T3B0aW9ucyBvcHRpb25zKQogewogICAgIGlmICh0YXJnZXQuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBTdGFydCBmcm9tIGFu
IGVkZ2Ugb2YgdGhlIHJlZmVyZW5jZSByYW5nZSwgaWYgdGhlcmUncyBhIHJlZmVyZW5jZSByYW5n
ZSB0aGF0J3Mgbm90IGluIHNoYWRvdyBjb250ZW50LiBXaGljaCBlZGdlCiAgICAgLy8gaXMgdXNl
ZCBkZXBlbmRzIG9uIHdoZXRoZXIgd2UncmUgc2VhcmNoaW5nIGZvcndhcmQgb3IgYmFja3dhcmQs
IGFuZCB3aGV0aGVyIHN0YXJ0SW5TZWxlY3Rpb24gaXMgc2V0LgpAQCAtMzE3Niw3ICszMTc2LDcg
QEAgUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNlUmEKICAgICAgICAgICAgIHNlYXJjaFJhbmdlLT5zZXRT
dGFydCgqc2hhZG93VHJlZVJvb3QsIDApOwogICAgIH0KIAotICAgIFJlZlB0cjxSYW5nZT4gcmVz
dWx0UmFuZ2UoZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdldCwgb3B0aW9ucykpOwor
ICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBmaW5kUGxhaW5UZXh0KCpzZWFyY2hSYW5n
ZSwgdGFyZ2V0LCBvcHRpb25zKTsKICAgICAvLyBJZiB3ZSBzdGFydGVkIGluIHRoZSByZWZlcmVu
Y2UgcmFuZ2UgYW5kIHRoZSBmb3VuZCByYW5nZSBleGFjdGx5IG1hdGNoZXMgdGhlIHJlZmVyZW5j
ZSByYW5nZSwgZmluZCBhZ2Fpbi4KICAgICAvLyBCdWlsZCBhIHNlbGVjdGlvbiB3aXRoIHRoZSBm
b3VuZCByYW5nZSB0byByZW1vdmUgY29sbGFwc2VkIHdoaXRlc3BhY2UuCiAgICAgLy8gQ29tcGFy
ZSByYW5nZXMgaW5zdGVhZCBvZiBzZWxlY3Rpb24gb2JqZWN0cyB0byBpZ25vcmUgdGhlIHdheSB0
aGF0IHRoZSBjdXJyZW50IHNlbGVjdGlvbiB3YXMgbWFkZS4KQEAgLTMyMjAsNyArMzIyMCw3IEBA
IFBhc3NSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRh
cmdldCwgUmFuZ2UqIHJlZmVyZW5jZVJhCiAgICAgICAgIC8vIHRoaXMgc2hvdWxkIGJlIGEgc3Vj
Y2VzcyBjYXNlIGluc3RlYWQsIHNvIHdlJ2xsIGp1c3QgZmFsbCB0aHJvdWdoIGluIHRoYXQgY2Fz
ZS4KICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0UmFuZ2UtPmNvbGxhcHNlZCgpID8gbnVsbHB0
ciA6IHJlc3VsdFJhbmdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0UmFuZ2UtPmNvbGxh
cHNlZCgpID8gbnVsbHB0ciA6IHJlc3VsdFJhbmdlOwogfQogCiBzdGF0aWMgYm9vbCBpc0ZyYW1l
SW5SYW5nZShGcmFtZSogZnJhbWUsIFJhbmdlKiByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CmluZGV4IDg1YjJiNGM0MmFiYWNmMTk2OTY5ZjYzZjljOGMwNjFhY2JhODY5MGYuLjllYWFkNDVl
N2IwY2U3NGI5MjY0MmE2NWM0MDExNmIwM2YwODJmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aApAQCAtMTY0LDkgKzE2NCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVm
UHRyPE5vZGU+IGluc2VydFVub3JkZXJlZExpc3QoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNhbkluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBjYW5EZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFBh
c3NSZWZQdHI8Tm9kZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBQYXNzUmVmUHRyPE5vZGU+IGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsT3JkZXJl
ZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8Tm9kZT4gaW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxVbm9yZGVyZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Tm9kZT4g
aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
Tm9kZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPE5vZGU+IGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOwog
ICAgCiAgICAgdm9pZCByZW1vdmVGb3JtYXR0aW5nQW5kU3R5bGUoKTsKQEAgLTM2NCw4ICszNjQs
OCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucyk7CiAKLSAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nKGNvbnN0
IFN0cmluZyYsIFJhbmdlKiwgRmluZE9wdGlvbnMpOwotICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGZp
bmRTdHJpbmdBbmRTY3JvbGxUb1Zpc2libGUoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBGaW5kT3B0
aW9ucyk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYsIFJh
bmdlKiwgRmluZE9wdGlvbnMpOworICAgIFJlZlB0cjxSYW5nZT4gZmluZFN0cmluZ0FuZFNjcm9s
bFRvVmlzaWJsZShjb25zdCBTdHJpbmcmLCBSYW5nZSosIEZpbmRPcHRpb25zKTsKIAogICAgIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIG1hcmsoKSBjb25zdDsgLy8gTWFyaywgdG8gYmUgdXNlZCBh
cyBlbWFjcyB1c2VzIGl0LgogICAgIHZvaWQgc2V0TWFyayhjb25zdCBWaXNpYmxlU2VsZWN0aW9u
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kLmNwcAppbmRleCAxNTAzMjI5MmFkZTY1ODg0NGE3ZjkyMDZjZmFi
NzA5ZmI1NjQxMGNmLi41YTUxYzM1N2FmMDNjNDJmYzkxOThlZTc2MDI2OWViZDFmOGZkYTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRv
ckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5jcHAKQEAgLTEzMSwxOSArMTMxLDE5IEBAIHZvaWQgSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6Z2V0QW5jZXN0b3JzSW5zaWRlQmxvY2soY29uc3QgTm9k
ZSogaW5zZXJ0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IEluc2VydFBhcmFncmFw
aFNlcGFyYXRvckNvbW1hbmQ6OmNsb25lSGllcmFyY2h5VW5kZXJOZXdCbG9jayhjb25zdCBWZWN0
b3I8UmVmUHRyPEVsZW1lbnQ+PiYgYW5jZXN0b3JzLCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGJsb2Nr
VG9JbnNlcnQpCitSZWZQdHI8RWxlbWVudD4gSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFu
ZDo6Y2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVu
dD4+JiBhbmNlc3RvcnMsIFBhc3NSZWZQdHI8RWxlbWVudD4gYmxvY2tUb0luc2VydCkKIHsKICAg
ICAvLyBNYWtlIGNsb25lcyBvZiBhbmNlc3RvcnMgaW4gYmV0d2VlbiB0aGUgc3RhcnQgbm9kZSBh
bmQgdGhlIHN0YXJ0IGJsb2NrLgogICAgIFJlZlB0cjxFbGVtZW50PiBwYXJlbnQgPSBibG9ja1Rv
SW5zZXJ0OwogICAgIGZvciAoc2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpICE9IDA7IC0t
aSkgewotICAgICAgICBSZWZQdHI8RWxlbWVudD4gY2hpbGQgPSBhbmNlc3RvcnNbaSAtIDFdLT5j
bG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oZG9jdW1lbnQoKSk7CisgICAgICAgIGF1dG8gY2hp
bGQgPSBhbmNlc3RvcnNbaSAtIDFdLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oZG9jdW1l
bnQoKSk7CiAgICAgICAgIC8vIEl0IHNob3VsZCBhbHdheXMgYmUgb2theSB0byByZW1vdmUgaWQg
ZnJvbSB0aGUgY2xvbmVkIGVsZW1lbnRzLCBzaW5jZSB0aGUgb3JpZ2luYWxzIGFyZSBub3QgZGVs
ZXRlZC4KICAgICAgICAgY2hpbGQtPnJlbW92ZUF0dHJpYnV0ZShpZEF0dHIpOwotICAgICAgICBh
cHBlbmROb2RlKGNoaWxkLCBwYXJlbnQpOwotICAgICAgICBwYXJlbnQgPSBjaGlsZC5yZWxlYXNl
KCk7CisgICAgICAgIGFwcGVuZE5vZGUoY2hpbGQucHRyKCksIHBhcmVudCk7CisgICAgICAgIHBh
cmVudCA9IFdURk1vdmUoY2hpbGQpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gcGFyZW50LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gcGFyZW50OwogfQogCiB2b2lkIEluc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuaAppbmRleCA2NzM0MTllMTkw
ZjUxNWViNTYzMzgyZDEzZmNjNzlkZjlhODkwOGYyLi44NzU3NmVlZDQ5YTc3ZDkxYTVkNzFlMzAz
ZTJjYWU5MTMwODY3YjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2FsY3VsYXRlU3R5bGVCZWZvcmVJbnNlcnRpb24oY29uc3QgUG9zaXRp
b24mKTsKICAgICB2b2lkIGFwcGx5U3R5bGVBZnRlckluc2VydGlvbihOb2RlKiBvcmlnaW5hbEVu
Y2xvc2luZ0Jsb2NrKTsKICAgICB2b2lkIGdldEFuY2VzdG9yc0luc2lkZUJsb2NrKGNvbnN0IE5v
ZGUqIGluc2VydGlvbk5vZGUsIEVsZW1lbnQqIG91dGVyQmxvY2ssIFZlY3RvcjxSZWZQdHI8RWxl
bWVudD4+JiBhbmNlc3RvcnMpOwotICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVIaWVyYXJj
aHlVbmRlck5ld0Jsb2NrKGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+JiBhbmNlc3RvcnMs
IFBhc3NSZWZQdHI8RWxlbWVudD4gYmxvY2tUb0luc2VydCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+
IGNsb25lSGllcmFyY2h5VW5kZXJOZXdCbG9jayhjb25zdCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+
PiYgYW5jZXN0b3JzLCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGJsb2NrVG9JbnNlcnQpOwogCiAgICAg
Ym9vbCBzaG91bGRVc2VEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChOb2RlKikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0Nv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRz
Q29tbWFuZC5jcHAKaW5kZXggNmQ0ZDc0NWNlZTAwMGRhNGYwYjA5YzljMjlkYzJiYTJhN2NkOTky
NS4uMWRiMzBmNzNiNjVjYzQwNmE3YTNhYWE0M2M1NGU5MDgzNmUxM2UxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFu
ZC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFu
ZDo6ZG9VbmFwcGx5KCkKICAgICBBU1NFUlQobV9lbGVtZW50MSk7CiAgICAgQVNTRVJUKG1fZWxl
bWVudDIpOwogCi0gICAgUmVmUHRyPE5vZGU+IGF0Q2hpbGQgPSBtX2F0Q2hpbGQucmVsZWFzZSgp
OworICAgIFJlZlB0cjxOb2RlPiBhdENoaWxkID0gV1RGTW92ZShtX2F0Q2hpbGQpOwogCiAgICAg
Q29udGFpbmVyTm9kZSogcGFyZW50ID0gbV9lbGVtZW50Mi0+cGFyZW50Tm9kZSgpOwogICAgIGlm
ICghcGFyZW50IHx8ICFwYXJlbnQtPmhhc0VkaXRhYmxlU3R5bGUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcAppbmRleCA4Mzdh
YjY4ZTZhMTVkOWNjOGFhNDMyZjJkMmZiYTE2OTg5MjFhYzFkLi4zNmJiMWE3YjhjNWE0NjU3OWQ1
NWQ1OTVkODUwOWI0Mjk1OGY4MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBJ
bmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICB9CiAg
ICAgICAgIGluc2VydE5vZGVCZWZvcmUobmV3UGFyZW50LCBzdGFydExpc3RDaGlsZCk7CiAgICAg
ICAgIGFwcGVuZFNpYmxpbmdOb2RlUmFuZ2Uoc3RhcnRMaXN0Q2hpbGQsIGVuZExpc3RDaGlsZCwg
bmV3UGFyZW50LmdldCgpKTsKLSAgICAgICAgbV9saXN0RWxlbWVudCA9IG5ld1BhcmVudC5yZWxl
YXNlKCk7CisgICAgICAgIG1fbGlzdEVsZW1lbnQgPSBXVEZNb3ZlKG5ld1BhcmVudCk7CiAgICAg
fQogfQogCkBAIC0yMDksMTMgKzIwOSwxMyBAQCBib29sIEluY3JlYXNlU2VsZWN0aW9uTGlzdExl
dmVsQ29tbWFuZDo6Y2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1lbnQqCiAgICAg
cmV0dXJuIGNhbkluY3JlYXNlTGlzdExldmVsKGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKSwgc3RhcnRMaXN0Q2hpbGQsIGVuZExpc3RDaGlsZCk7CiB9CiAKLVBhc3NS
ZWZQdHI8Tm9kZT4gSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjppbmNyZWFzZVNl
bGVjdGlvbkxpc3RMZXZlbChEb2N1bWVudCogZG9jdW1lbnQsIFR5cGUgdHlwZSkKK1JlZlB0cjxO
b2RlPiBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OmluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsKERvY3VtZW50KiBkb2N1bWVudCwgVHlwZSB0eXBlKQogewogICAgIEFTU0VSVChk
b2N1bWVudCk7CiAgICAgQVNTRVJUKGRvY3VtZW50LT5mcmFtZSgpKTsKLSAgICBSZWZQdHI8SW5j
cmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kPiBjb21tYW5kID0gY3JlYXRlKCpkb2N1bWVu
dCwgdHlwZSk7CisgICAgYXV0byBjb21tYW5kID0gY3JlYXRlKCpkb2N1bWVudCwgdHlwZSk7CiAg
ICAgY29tbWFuZC0+YXBwbHkoKTsKLSAgICByZXR1cm4gY29tbWFuZC0+bV9saXN0RWxlbWVudC5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoY29tbWFuZC0+bV9saXN0RWxlbWVudCk7CiB9
CiAKIFBhc3NSZWZQdHI8Tm9kZT4gSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjpp
bmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbChEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaAppbmRleCBlZDY5
NGNhMTBjOWY1MWM4YzQ1OGM5YThlMjcyNWY1OGM0ZjNlYTMyLi4wOTg2ZjVhNzk3NDYxYzlkYzMy
MDFkZjRkNDM5NjU3MTViZjM3NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGVudW0gVHlwZSB7IEluaGVyaXRlZExpc3RUeXBlLCBPcmRlcmVkTGlzdCwg
VW5vcmRlcmVkTGlzdCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGU+IGluY3JlYXNlU2Vs
ZWN0aW9uTGlzdExldmVsKERvY3VtZW50KiwgVHlwZSk7CisgICAgc3RhdGljIFJlZlB0cjxOb2Rl
PiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbChEb2N1bWVudCosIFR5cGUpOwogCiAgICAgc3Rh
dGljIFJlZjxJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ+IGNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFR5cGUgdHlwZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlTm9kZUNvbW1hbmQuY3BwCmluZGV4IGIzZGYxODZkY2M2MWMxN2E3Yjg4OGY1YWQ5NGFi
ZTFiMTUyODViYTYuLjAwZWRhNDg1NTlkNzhhNjM1ZjVlOGEwM2E0MGU0ZjdkYTNmYTdkOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCkBAIC01OCw4
ICs1OCw4IEBAIHZvaWQgUmVtb3ZlTm9kZUNvbW1hbmQ6OmRvQXBwbHkoKQogCiB2b2lkIFJlbW92
ZU5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBw
YXJlbnQgPSBtX3BhcmVudC5yZWxlYXNlKCk7Ci0gICAgUmVmUHRyPE5vZGU+IHJlZkNoaWxkID0g
bV9yZWZDaGlsZC5yZWxlYXNlKCk7CisgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9
IFdURk1vdmUobV9wYXJlbnQpOworICAgIFJlZlB0cjxOb2RlPiByZWZDaGlsZCA9IFdURk1vdmUo
bV9yZWZDaGlsZCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aGFzRWRpdGFibGVTdHls
ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKaW5kZXgg
YzYyOTcxNmZlZWJjZTE3Y2NlMmQzYWNkYjAzYzk2MWJkNWNjZTBkYi4uYjYxZTJmZmFhY2U0Mjk0
YWQzZDIzNmNiMmNkNjIwNGE5N2RmYmNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAK
QEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBSZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFu
ZDo6ZG9BcHBseSgpCiAKICAgICBzaXplX3Qgc2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBSZWZQdHI8Tm9kZT4g
Y2hpbGQgPSBjaGlsZHJlbltpXS5yZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxOb2RlPiBjaGls
ZCA9IFdURk1vdmUoY2hpbGRyZW5baV0pOwogICAgICAgICByZW1vdmVOb2RlKGNoaWxkLCBtX3No
b3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlKTsKICAgICAgICAgaW5zZXJ0Tm9kZUJl
Zm9yZShjaGlsZC5yZWxlYXNlKCksIG1fbm9kZSwgbV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdh
eXNFZGl0YWJsZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBkMTJjYzk3NDgzZTM1ZDZjNDU4MjA2NTczMDhj
NmIyOTQyZjczNjQ1Li4wNzBmYjgxZmNkNmMzMmY1YjMzZTNhYjJmZmRmODBhMWVjYjdkZjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVOb2RlUHJlc2Vy
dmluZ0NoaWxkcmVuKFBhc3NSZWZQdHI8Tm9kZT4pOwogCiBwcml2YXRlOgotICAgIFBhc3NSZWZQ
dHI8U3R5bGVkRWxlbWVudD4gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKE5vZGUqIHJv
b3RFZGl0YWJsZU5vZGUpOworICAgIFJlZjxIVE1MRWxlbWVudD4gaW5zZXJ0RnJhZ21lbnRGb3JU
ZXN0UmVuZGVyaW5nKE5vZGUqIHJvb3RFZGl0YWJsZU5vZGUpOwogICAgIHZvaWQgcmVtb3ZlVW5y
ZW5kZXJlZE5vZGVzKE5vZGUqKTsKICAgICB2b2lkIHJlc3RvcmVBbmRSZW1vdmVUZXN0UmVuZGVy
aW5nTm9kZXNUb0ZyYWdtZW50KFN0eWxlZEVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZUludGVy
Y2hhbmdlTm9kZXMoTm9kZSopOwpAQCAtMjUyLDE1ICsyNTIsMTUgQEAgdm9pZCBSZXBsYWNlbWVu
dEZyYWdtZW50OjppbnNlcnROb2RlQmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgTm9kZSog
cmVmTm9kZSkKICAgICBwYXJlbnQtPmluc2VydEJlZm9yZSgqbm9kZSwgcmVmTm9kZSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVkRWxlbWVudD4gUmVwbGFjZW1l
bnRGcmFnbWVudDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKE5vZGUqIHJvb3RFZGl0
YWJsZUVsZW1lbnQpCitSZWY8SFRNTEVsZW1lbnQ+IFJlcGxhY2VtZW50RnJhZ21lbnQ6Omluc2Vy
dEZyYWdtZW50Rm9yVGVzdFJlbmRlcmluZyhOb2RlKiByb290RWRpdGFibGVFbGVtZW50KQogewot
ICAgIFJlZlB0cjxTdHlsZWRFbGVtZW50PiBob2xkZXIgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBo
RWxlbWVudChkb2N1bWVudCgpKTsKKyAgICBhdXRvIGhvbGRlciA9IGNyZWF0ZURlZmF1bHRQYXJh
Z3JhcGhFbGVtZW50KGRvY3VtZW50KCkpOwogCiAgICAgaG9sZGVyLT5hcHBlbmRDaGlsZCgqbV9m
cmFnbWVudCwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgcm9vdEVkaXRhYmxlRWxlbWVudC0+
YXBwZW5kQ2hpbGQoaG9sZGVyLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICByb290
RWRpdGFibGVFbGVtZW50LT5hcHBlbmRDaGlsZChob2xkZXIucHRyKCksIEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7CiAKLSAgICByZXR1cm4gaG9sZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaG9sZGVy
OwogfQogCiB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlc3RvcmVBbmRSZW1vdmVUZXN0UmVu
ZGVyaW5nTm9kZXNUb0ZyYWdtZW50KFN0eWxlZEVsZW1lbnQqIGhvbGRlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4
IDQxZGZlNmJkYzllYTljYjY5Y2IwOTc5MGE4OTgyMjkyYzhlZjgwZDIuLjIzMjVlNzdjNmNlN2Ey
MzBmYjI1YTIyMTIzZGUyNTVjZDc3ODFhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtMTAxLDE2ICsxMDEsMTQg
QEAgdm9pZCBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICBpZiAoIW1f
cmFuZ2VUb0JlQ29ycmVjdGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21UZXh0KCptX3JhbmdlVG9C
ZUNvcnJlY3RlZCwgbV9jb3JyZWN0aW9uKTsKLSAgICBpZiAoIWZyYWdtZW50KQotICAgICAgICBy
ZXR1cm47CisgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoKm1fcmFu
Z2VUb0JlQ29ycmVjdGVkLCBtX2NvcnJlY3Rpb24pOwogCiAgICAgYXBwbHlDb21tYW5kVG9Db21w
b3NpdGUoU2V0U2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKG1fc2VsZWN0aW9uVG9CZUNvcnJlY3Rl
ZCwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkgfCBGcmFtZVNl
bGVjdGlvbjo6U3BlbGxDb3JyZWN0aW9uVHJpZ2dlcmVkKSk7CiAjaWYgVVNFKEFVVE9DT1JSRUNU
SU9OX1BBTkVMKQogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFNwZWxsaW5nQ29ycmVjdGlv
blJlY29yZFVuZG9Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgbV9jb3JyZWN0ZWQsIG1fY29y
cmVjdGlvbikpOwogI2VuZGlmCiAKLSAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGZyYWdtZW50LnJlbGVhc2UoKSwg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUsIEVkaXRBY3Rpb25QYXN0ZSkpOwor
ICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVh
dGUoZG9jdW1lbnQoKSwgV1RGTW92ZShmcmFnbWVudCksIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpNYXRjaFN0eWxlLCBFZGl0QWN0aW9uUGFzdGUpKTsKIH0KIAogYm9vbCBTcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kOjpzaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3Vw
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmgKaW5kZXgg
OTgyZGFjMzRkMThkMGNkNmVkM2E1NWUzZTc0ZWIzMWVlYWRlYmE5Mi4uMjdkMTA0YjcyODJlYzAy
ODdkZGY1NTY0NmY2MmUyZTE3NDJmZTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0RpY3Rpb25hcnlMb29rdXAuaApAQCAtNTIsOCArNTIsOCBAQCBjbGFzcyBWaXNpYmxlU2Vs
ZWN0aW9uOwogCiBjbGFzcyBEaWN0aW9uYXJ5TG9va3VwIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUF0SGl0VGVzdFJlc3VsdChjb25z
dCBIaXRUZXN0UmVzdWx0JiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucyk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RS
ZXN1bHQmLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgTlNTdHJpbmcgKnN0cmluZ0ZvclBERlNlbGVjdGlvbihQREZTZWxlY3Rpb24gKiwgTlNEaWN0
aW9uYXJ5ICoqb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIG1vdmUvdW5pZnkgZGlj
dGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlIGhlcmUgdG9vLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXggMWE5YzFiN2YyZTc5OGY4MTczMGNi
MWJiODcwNjAzMmEwNWYwMTJjNi4uMjE1NzU2ZTNiY2YwNjgxYWI0N2EwNmNmODZhNjNmM2ExNDZj
ODcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxv
b2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3Vw
Lm1tCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkNvbnRhaW5zUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgVmlzCiAgICAgcmV0dXJu
IHNlbGVjdGVkUmFuZ2UtPmNvbnRhaW5zKHBvc2l0aW9uKTsKIH0KIAotUGFzc1JlZlB0cjxSYW5n
ZT4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKQorUmVmUHRyPFJhbmdlPiBE
aWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24sIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCiB7CiAgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYg
KCFzZWxlY3RlZFJhbmdlKQpAQCAtOTAsMTAgKzkwLDEwIEBAIFBhc3NSZWZQdHI8UmFuZ2U+IERp
Y3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlCiAgICAgICAgIFtsdUxvb2t1cERlZmluaXRpb25Nb2R1bGUgdG9rZW5SYW5nZUZvclN0cmlu
ZzpmdWxsUGxhaW5UZXh0U3RyaW5nIHJhbmdlOnJhbmdlVG9QYXNzIG9wdGlvbnM6b3B0aW9uc107
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIHJldHVybiBzZWxlY3RlZFJh
bmdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc2VsZWN0ZWRSYW5nZTsKIH0KIAotUGFzc1JlZlB0
cjxSYW5nZT4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0
VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKK1JlZlB0
cjxSYW5nZT4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0
VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKIHsKICAg
ICBOb2RlKiBub2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBp
ZiAoIW5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMGE0
NmViNzg2MzM3YWE2MTA5MTQ4OWNhZWMwYTZhNjE4MTg4NzkxOS4uOGNlY2QyZTNiNDk0NmQ1YTc2
N2ViMDUxZTYyZmY4OWZmYzM3MDQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcApAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpmaW5pc2hS
ZXF1ZXN0QXV0b2NvbXBsZXRlKEF1dG9jb21wbGV0ZVJlc3VsdCByZXN1bHQpCiAgICAgfQogCiAg
ICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAgICBtX3BlbmRpbmdBdXRvY29tcGxldGVFdmVu
dHMuYXBwZW5kKGV2ZW50LnJlbGVhc2UoKSk7CisgICAgbV9wZW5kaW5nQXV0b2NvbXBsZXRlRXZl
bnRzLmFwcGVuZChXVEZNb3ZlKGV2ZW50KSk7CiAKICAgICAvLyBEaXNwYXRjaCBldmVudHMgbGF0
ZXIgYXMgdGhpcyBBUEkgaXMgbWVhbnQgdG8gd29yayBhc3luY2hyb25vdXNseSBpbiBhbGwgc2l0
dWF0aW9ucyBhbmQgaW1wbGVtZW50YXRpb25zLgogICAgIGlmICghbV9yZXF1ZXN0QXV0b2NvbXBs
ZXRlVGltZXIuaXNBY3RpdmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDBiN2VjZDlhNTA4NDRhOGNlN2IxNDRiYjg3NDFlMGIxMzkzY2MyYTUuLjMwMGNm
NmFjMmY3MzE2ZTY1ODk5MzRmYmVmNmQ4ZTc5YmM3MTE1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtOTAwLDcgKzkwMCw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKICAg
ICAvLyBEb24ndCBzZXQgdGhlIGV2ZW50IHRhcmdldCwgdGhlIGV2ZW50IHF1ZXVlIHdpbGwgc2V0
IGl0IGluIEdlbmVyaWNFdmVudFF1ZXVlOjp0aW1lckZpcmVkIGFuZCBzZXR0aW5nIGl0IGhlcmUK
ICAgICAvLyB3aWxsIHRyaWdnZXIgYW4gQVNTRVJUIGlmIHRoaXMgZWxlbWVudCBoYXMgYmVlbiBt
YXJrZWQgZm9yIGRlbGV0aW9uLgogCi0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50
KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdU
Rk1vdmUoZXZlbnQpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwZW5kaW5nQWN0aW9u
VGltZXJGaXJlZCgpCkBAIC0xNjE5LDExICsxNjE5LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkK
ICAgICAgICAgaWYgKGV2ZW50VGFza3NbaV0uc2Vjb25kLT5zdGFydFRpbWUoKSA+PSBldmVudFRh
c2tzW2ldLnNlY29uZC0+ZW5kVGltZSgpKSB7CiAgICAgICAgICAgICBldmVudCA9IEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmVudGVyRXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAg
ICBldmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFza3NbaV0uc2Vjb25kKTsKLSAgICAgICAgICAgIG1f
YXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOworICAgICAgICAg
ICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIAogICAg
ICAgICAgICAgZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5leGl0RXZlbnQsIGZh
bHNlLCBmYWxzZSk7CiAgICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFza3NbaV0u
c2Vjb25kKTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChldmVu
dC5yZWxlYXNlKCkpOworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50
KFdURk1vdmUoZXZlbnQpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChldmVu
dFRhc2tzW2ldLmZpcnN0ID09IGV2ZW50VGFza3NbaV0uc2Vjb25kLT5zdGFydE1lZGlhVGltZSgp
KQogICAgICAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50
ZXJFdmVudCwgZmFsc2UsIGZhbHNlKTsKQEAgLTE2MzEsNyArMTYzMSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1v
dmllVGltZSkKICAgICAgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmV4aXRFdmVudCwgZmFsc2UsIGZhbHNlKTsKIAogICAgICAgICAgICAgZXZlbnQtPnNldFRh
cmdldChldmVudFRhc2tzW2ldLnNlY29uZCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1
ZS5lbnF1ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTE2NDUsNyArMTY0NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZl
VGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICAgICAgUmVmUHRy
PEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmN1ZWNoYW5nZUV2ZW50
LCBmYWxzZSwgZmFsc2UpOwogICAgICAgICBldmVudC0+c2V0VGFyZ2V0KGFmZmVjdGVkVHJhY2tz
W2ldKTsKIAotICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoZXZlbnQucmVs
ZWFzZSgpKTsKKyAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKIAogICAgICAgICAvLyAuLi4gaWYgdGhlIHRleHQgdHJhY2sgaGFzIGEgY29ycmVz
cG9uZGluZyB0cmFjayBlbGVtZW50LCB0byB0aGVuIGZpcmUgYQogICAgICAgICAvLyBzaW1wbGUg
ZXZlbnQgbmFtZWQgY3VlY2hhbmdlIGF0IHRoZSB0cmFjayBlbGVtZW50IGFzIHdlbGwuCkBAIC0x
NjU1LDcgKzE2NTUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRU
cmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgICAgICBBU1NFUlQo
dHJhY2tFbGVtZW50KTsKICAgICAgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodHJhY2tFbGVtZW50
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2
ZW50KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMzUzLDkg
KzIzNTMsOSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1l
ZGlhUGxheWVyKiwgVWludDhBcnJheSogaW5pdERhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gTWVkaWFLZXlOZWVkZWRFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsKKyAgICBh
dXRvIGV2ZW50ID0gTWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJr
aXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwot
ICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOworICAg
IG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTM2MDUsNyArMzYwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Zm9yZ2V0UmVzb3VyY2VTcGVjaWZpY1RyYWNrcygpCiAgICAgICAgIHJlbW92ZVZpZGVvVHJh
Y2sobV92aWRlb1RyYWNrcy0+bGFzdEl0ZW0oKSk7CiB9CiAKLVBhc3NSZWZQdHI8VGV4dFRyYWNr
PiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBFeGNlcHRpb25Db2RlJiBl
YykKK1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIDQuOC4xMC4xMi40IFRleHQgdHJhY2sg
QVBJCiAgICAgLy8gVGhlIGFkZFRleHRUcmFjayhraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpIG1ldGhv
ZCBvZiBtZWRpYSBlbGVtZW50cywgd2hlbiBpbnZva2VkLCBtdXN0IHJ1biB0aGUgZm9sbG93aW5n
IHN0ZXBzOgpAQCAtMzYxMyw3ICszNjEzLDcgQEAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxN
ZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFMKICAg
ICAvLyAxLiBJZiBraW5kIGlzIG5vdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzLCB0aGVu
IHRocm93IGEgU3ludGF4RXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcwogICAg
IGlmICghVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoa2luZCkpIHsKICAgICAgICAgZWMg
PSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKICAgICAvLyAyLiBJZiB0aGUgbGFiZWwgYXJndW1lbnQgd2FzIG9taXR0ZWQsIGxl
dCBsYWJlbCBiZSB0aGUgZW1wdHkgc3RyaW5nLgpAQCAtMzYyMiwxMyArMzYyMiwxMyBAQCBQYXNz
UmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0
cmluZyYga2luZCwgY29uc3QgUwogCiAgICAgLy8gNS4gQ3JlYXRlIGEgbmV3IHRleHQgdHJhY2sg
Y29ycmVzcG9uZGluZyB0byB0aGUgbmV3IG9iamVjdCwgYW5kIHNldCBpdHMgdGV4dCB0cmFjayBr
aW5kIHRvIGtpbmQsIGl0cyB0ZXh0IAogICAgIC8vIHRyYWNrIGxhYmVsIHRvIGxhYmVsLCBpdHMg
dGV4dCB0cmFjayBsYW5ndWFnZSB0byBsYW5ndWFnZS4uLgotICAgIFJlZlB0cjxUZXh0VHJhY2s+
IHRleHRUcmFjayA9IFRleHRUcmFjazo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCB0aGlzLCBraW5kLCBlbXB0eVN0cmluZygpLCBsYWJlbCwgbGFuZ3Vh
Z2UpOworICAgIGF1dG8gdGV4dFRyYWNrID0gVGV4dFRyYWNrOjpjcmVhdGUoQWN0aXZlRE9NT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIGtpbmQsIGVtcHR5U3RyaW5nKCks
IGxhYmVsLCBsYW5ndWFnZSk7CiAKICAgICAvLyBOb3RlLCBkdWUgdG8gc2lkZSBlZmZlY3RzIHdo
ZW4gY2hhbmdpbmcgdHJhY2sgcGFyYW1ldGVycywgd2UgaGF2ZSB0bwogICAgIC8vIGZpcnN0IGFw
cGVuZCB0aGUgdHJhY2sgdG8gdGhlIHRleHQgdHJhY2sgbGlzdC4KIAogICAgIC8vIDYuIEFkZCB0
aGUgbmV3IHRleHQgdHJhY2sgdG8gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJh
Y2tzLgotICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2spOworICAgIGFkZFRleHRUcmFjayh0ZXh0
VHJhY2sucHRyKCkpOwogCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNrIHJlYWRpbmVzcyBzdGF0
ZSB0byB0aGUgdGV4dCB0cmFjayBsb2FkZWQgc3RhdGUgLi4uCiAgICAgdGV4dFRyYWNrLT5zZXRS
ZWFkaW5lc3NTdGF0ZShUZXh0VHJhY2s6OkxvYWRlZCk7CkBAIC0zNjM2LDcgKzM2MzYsNyBAQCBQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgUwogICAgIC8vIC4uLiBpdHMgdGV4dCB0cmFjayBtb2RlIHRv
IHRoZSB0ZXh0IHRyYWNrIGhpZGRlbiBtb2RlLCBhbmQgaXRzIHRleHQgdHJhY2sgbGlzdCBvZiBj
dWVzIHRvIGFuIGVtcHR5IGxpc3QgLi4uCiAgICAgdGV4dFRyYWNrLT5zZXRNb2RlKFRleHRUcmFj
azo6TW9kZTo6SGlkZGVuKTsKIAotICAgIHJldHVybiB0ZXh0VHJhY2sucmVsZWFzZSgpOworICAg
IHJldHVybiBXVEZNb3ZlKHRleHRUcmFjayk7CiB9CiAKIEF1ZGlvVHJhY2tMaXN0KiBIVE1MTWVk
aWFFbGVtZW50OjphdWRpb1RyYWNrcygpCkBAIC01MTkzLDkgKzUxOTMsOSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVu
dCgpCiB7CiAgICAgYm9vbCBoYXNUYXJnZXRzID0gbV9tZWRpYVNlc3Npb24tPmhhc1dpcmVsZXNz
UGxheWJhY2tUYXJnZXRzKCp0aGlzKTsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoJXApIC0gaGFz
VGFyZ2V0cyA9ICVzIiwgdGhpcywgYm9vbFN0cmluZyhoYXNUYXJnZXRzKSk7Ci0gICAgUmVmUHRy
PEV2ZW50PiBldmVudCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2Vk
RXZlbnQsIGhhc1RhcmdldHMpOworICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFy
Z2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50LCBoYXNUYXJnZXRzKTsKICAgICBldmVudC0+c2V0
VGFyZ2V0KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChldmVudC5y
ZWxlYXNlKCkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2
ZW50KSk7CiAgICAgdXBkYXRlTWVkaWFTdGF0ZShVcGRhdGVNZWRpYVN0YXRlOjpBc3luY2hyb25v
dXNseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYjIx
NDczMWY3NDEzNzQxOTcwYjgxOGJiNjE5MDEzYWMxMDUyYjgzNi4uNzZhNzkzZDBhNjI3ZThkMGM2
OTc2MDk4ZjFlYTJmM2U5ZDE4M2Y1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHBlcmNlbnRMb2Fk
ZWQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBQYXNzUmVmUHRyPFRl
eHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0
cjxUZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrcygpOwogICAgIFRleHRUcmFja0xpc3QqIHRleHRU
cmFja3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRl
eEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFy
cmF5T2JqZWN0LmNwcAppbmRleCAxNmFhOGQ3NTc3MGJjZjA2YTA0NjE4YWM0Y2IyNzM3ODY1ZWQ0
NTQ0Li44ZWU3YjYzMjg4MzI5MzhjZDY2Nzc3YjJhOTFlNjcyNzQ2M2E4YzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCkBA
IC00OCwxNCArNDgsMTQgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVmVydGV4
QXJyYXlPYmplY3Q6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBPRVNWZXJ0ZXhBcnJheU9i
amVjdE5hbWU7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gT0VT
VmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKK1JlZlB0cjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTPiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlVmVydGV4QXJy
YXlPRVMoKQogewogICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIFJlZlB0cjxXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTPiBvID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3Jl
YXRlKG1fY29udGV4dCwgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VkFPVHlwZVVzZXIpOwot
ICAgIG1fY29udGV4dC0+YWRkQ29udGV4dE9iamVjdChvLmdldCgpKTsKLSAgICByZXR1cm4gby5y
ZWxlYXNlKCk7CisgICAgYXV0byBvYmplY3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpj
cmVhdGUobV9jb250ZXh0LCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpWQU9UeXBlVXNlcik7
CisgICAgbV9jb250ZXh0LT5hZGRDb250ZXh0T2JqZWN0KG9iamVjdC5wdHIoKSk7CisgICAgcmV0
dXJuIFdURk1vdmUob2JqZWN0KTsKIH0KIAogdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6ZGVs
ZXRlVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXlPYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3Qu
aAppbmRleCA3NGVhN2YzZDNhOWU2ZGE1ZmI5MGUxYTAzMDk3Nzc1OGZjN2NmZjYzLi41OWU5M2Ux
M2M5NWJlZjZlNzVhYTFiMjY3N2QxMzZkNjk5MzNhYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgCi0gICAgUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBjcmVhdGVWZXJ0
ZXhBcnJheU9FUygpOworICAgIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUyopOwogICAgIEdDM0Rib29sZWFuIGlzVmVydGV4QXJyYXlPRVMo
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyopOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VT
KFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCmluZGV4IGE0YWYwN2Q4Nzg0NjU5MjE1ODE0OTQ5MzJiYTgwM2NkMTkyZmRhYmMuLjkyOTA4
OTFhNWI0MTNiN2YyMzYzNjVkZDhlNzkwYWJlYjY4ODQyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBA
IC0yMjAxLDcgKzIyMDEsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0QnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRAogICAgIHJldHVybiBX
ZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih2YWx1ZSkpOwogfQogCi1QYXNz
UmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldENvbnRleHRBdHRyaWJ1dGVzKCkKK1JlZlB0cjxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCiB7CiAgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yMjExLDEyICsyMjExLDEyIEBAIFBhc3NSZWZQdHI8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Q29udGV4dEF0dHJpYnV0CiAgICAgLy8gQWxz
bywgd2UgbmVlZCB0byBlbmZvcmNlIHJlcXVlc3RlZCB2YWx1ZXMgb2YgImZhbHNlIiBmb3IgZGVw
dGgKICAgICAvLyBhbmQgc3RlbmNpbCwgcmVnYXJkbGVzcyBvZiB0aGUgcHJvcGVydGllcyBvZiB0
aGUgdW5kZXJseWluZwogICAgIC8vIEdyYXBoaWNzQ29udGV4dDNELgotICAgIFJlZlB0cjxXZWJH
TENvbnRleHRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzID0gV2ViR0xDb250ZXh0QXR0cmlidXRlczo6
Y3JlYXRlKG1fY29udGV4dC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgYXV0byBhdHRy
aWJ1dGVzID0gV2ViR0xDb250ZXh0QXR0cmlidXRlczo6Y3JlYXRlKG1fY29udGV4dC0+Z2V0Q29u
dGV4dEF0dHJpYnV0ZXMoKSk7CiAgICAgaWYgKCFtX2F0dHJpYnV0ZXMuZGVwdGgpCiAgICAgICAg
IGF0dHJpYnV0ZXMtPnNldERlcHRoKGZhbHNlKTsKICAgICBpZiAoIW1fYXR0cmlidXRlcy5zdGVu
Y2lsKQogICAgICAgICBhdHRyaWJ1dGVzLT5zZXRTdGVuY2lsKGZhbHNlKTsKLSAgICByZXR1cm4g
YXR0cmlidXRlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoYXR0cmlidXRlcyk7CiB9
CiAKIEdDM0RlbnVtIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEVycm9yKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAppbmRleCBjZmViMjkxNjE1MmQxMjRhYzNhN2Q5YzFmMDkzMDcwNjNkN2Y5ODk2Li5hNTY3
YWFkMDRlOTcwZGY5MDQ5Njk1ZTIyMjhjNjg2OGU3M2I0YTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0x
OTcsNyArMTk3LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdM
UHJvZ3JhbSosIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+PiYsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBHQzNEaW50IGdldEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAgICAgV2ViR0xHZXRJbmZvIGdldEJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzPiBnZXRDb250ZXh0QXR0cmlidXRlcygpOworICAgIFJlZlB0
cjxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiBnZXRDb250ZXh0QXR0cmlidXRlcygpOwogICAgIEdD
M0RlbnVtIGdldEVycm9yKCk7CiAgICAgdmlydHVhbCBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogICAgIHZpcnR1YWwgV2ViR0xHZXRJbmZvIGdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IDA1NWYyYzU2MjNiM2NmNjBmMzQ5YzA4ZTdm
MWQ4NjRmNTBlMWM3MDAuLjMyZjkzMGJlOTNjYThmNzM2YmJlOGJmNzNmMTUxNGJkYzNjMWE2NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTUwMiwyNyArNTAyLDI2IEBA
IHZvaWQgVlRUQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZShDb250YWluZXJOb2RlKiB3ZWJW
VFROb2RlLCBDb250YWluZXJOb2RlKiBwCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IFZUVEN1ZTo6Z2V0Q3VlQXNIVE1MKCkKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBWVFRDdWU6OmdldEN1ZUFzSFRNTCgpCiB7CiAgICAgY3JlYXRlV2ViVlRUTm9kZVRyZWUoKTsK
ICAgICBpZiAoIW1fd2ViVlRUTm9kZVRyZWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFn
bWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50KCkpOwotICAgIGNv
cHlXZWJWVFROb2RlVG9ET01UcmVlKG1fd2ViVlRUTm9kZVRyZWUuZ2V0KCksIGNsb25lZEZyYWdt
ZW50LmdldCgpKTsKLSAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQucmVsZWFzZSgpOworICAgIGF1
dG8gY2xvbmVkRnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUob3duZXJEb2N1bWVu
dCgpKTsKKyAgICBjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZShtX3dlYlZUVE5vZGVUcmVlLmdldCgp
LCBjbG9uZWRGcmFnbWVudC5wdHIoKSk7CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmVkRnJhZ21l
bnQpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFZUVEN1ZTo6Y3JlYXRlQ3Vl
UmVuZGVyaW5nVHJlZSgpCitSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVlRUQ3VlOjpjcmVhdGVD
dWVSZW5kZXJpbmdUcmVlKCkKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmVk
RnJhZ21lbnQ7CiAgICAgY3JlYXRlV2ViVlRUTm9kZVRyZWUoKTsKICAgICBpZiAoIW1fd2ViVlRU
Tm9kZVRyZWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgY2xvbmVkRnJhZ21lbnQg
PSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUob3duZXJEb2N1bWVudCgpKTsKLSAgICBtX3dlYlZU
VE5vZGVUcmVlLT5jbG9uZUNoaWxkTm9kZXMoKmNsb25lZEZyYWdtZW50KTsKLSAgICByZXR1cm4g
Y2xvbmVkRnJhZ21lbnQucmVsZWFzZSgpOworICAgIGF1dG8gY2xvbmVkRnJhZ21lbnQgPSBEb2N1
bWVudEZyYWdtZW50OjpjcmVhdGUob3duZXJEb2N1bWVudCgpKTsKKyAgICBtX3dlYlZUVE5vZGVU
cmVlLT5jbG9uZUNoaWxkTm9kZXMoY2xvbmVkRnJhZ21lbnQpOworICAgIHJldHVybiBXVEZNb3Zl
KGNsb25lZEZyYWdtZW50KTsKIH0KIAogdm9pZCBWVFRDdWU6OnNldFJlZ2lvbklkKGNvbnN0IFN0
cmluZyYgcmVnaW9uSWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZU
VEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAppbmRleCA5MjU1MmFk
MDA1YzYwOTMyMDY5ZjAyZGY3Y2JjOWE0ZTJkZGNkYjgzLi5kY2VkYjI2ZmYyYjU3MzM3NTM5MThj
YWZmZWM1MDVjOTZlZWUwMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKQEAgLTEx
NCw4ICsxMTQsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBjdWVTZXR0aW5ncygpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KICAgICB2b2lkIHNldEN1ZVNldHRpbmdzKGNvbnN0
IFN0cmluZyYpOwogCi0gICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBnZXRDdWVBc0hU
TUwoKTsKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUN1ZVJlbmRlcmlu
Z1RyZWUoKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZ2V0Q3VlQXNIVE1MKCk7Cisg
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUN1ZVJlbmRlcmluZ1RyZWUoKTsKIAog
ICAgIGNvbnN0IFN0cmluZyYgcmVnaW9uSWQoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbklkOyB9
CiAgICAgdm9pZCBzZXRSZWdpb25JZChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCmluZGV4IDFmNjEwZjVkMGMyM2UzMjdlYjAxYmE3
ZTE1ZTBiNDY1MjFkYjBiZjYuLjA3ZGE1MTIxY2Q4NzFmMzA2NjMyODVmOTJlNzU2YWJmZmU1Y2Yz
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcApAQCAt
ODcsNyArODcsNyBAQCBSZWY8RWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0
aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYgdAogICAgIHJldHVybiBXVEZNb3Zl
KGNsb25lKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y3Jl
YXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKK1JlZjxIVE1MRWxl
bWVudD4gV2ViVlRURWxlbWVudDo6Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGh0bWxFbGVtZW50OwogCkBA
IC0xMTksNyArMTE5LDcgQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gV2ViVlRURWxlbWVudDo6
Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50JiBkb2MKICAgICBBU1NFUlQoaHRt
bEVsZW1lbnQpOwogICAgIGlmIChodG1sRWxlbWVudCkKICAgICAgICAgaHRtbEVsZW1lbnQtPnNl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmNsYXNzQXR0cikpOwotICAgIHJldHVybiBodG1sRWxlbWVudC5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGh0bWxFbGVtZW50LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXgg
NDQ3MDdjYTJlMWYxNWE1Y2U4YzExNDc2YzI5Mzg1NDg4ZTRhOGU3NS4uM2Q1YWM2M2U4MzJhYmE0
YWIwMzg4NTU1Y2NiOGQ4YTQ2ZGIyOTZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgZW51bSBXZWJWVFROb2RlVHlwZSB7CiBj
bGFzcyBXZWJWVFRFbGVtZW50IGZpbmFsIDogcHVibGljIEVsZW1lbnQgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0IFdlYlZUVE5vZGVUeXBlLCBE
b2N1bWVudCYpOwotICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUVxdWl2YWxlbnRI
VE1MRWxlbWVudChEb2N1bWVudCYpOworICAgIFJlZjxIVE1MRWxlbWVudD4gY3JlYXRlRXF1aXZh
bGVudEhUTUxFbGVtZW50KERvY3VtZW50Jik7CiAKICAgICBSZWY8RWxlbWVudD4gY2xvbmVFbGVt
ZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggOGU5MjYzMDI0
ODY0NDYzMWZlMTlmYTdkMjFiZmQ2YTdkNmJjMzNjZi4uMjIyMzhiY2NjYzc4NmRhZGJmMmI4ODU3
ODViNTViNjdmMWMyMzZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFy
c2VyLmNwcApAQCAtMzY0LDcgKzM2NCw3IEBAIHB1YmxpYzoKICAgICBXZWJWVFRUcmVlQnVpbGRl
cihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkgeyB9
CiAKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGJ1aWxkRnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmIGN1ZVRleHQpOworICAgIFJlZjxEb2N1bWVudEZyYWdtZW50PiBidWlsZEZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJiBjdWVUZXh0KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbnN0
cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQmKTsKQEAgLTM3NSwxOSArMzc1LDE5IEBAIHByaXZh
dGU6CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiB9OwogCi1QYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IFdlYlZUVFRyZWVCdWlsZGVyOjpidWlsZEZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiBjdWVUZXh0KQorUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFRyZWVCdWlsZGVyOjpidWls
ZEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBjdWVUZXh0KQogewogICAgIC8vIEN1ZSB0ZXh0IHBy
b2Nlc3NpbmcgYmFzZWQgb24KICAgICAvLyA1LjQgV2ViVlRUIGN1ZSB0ZXh0IHBhcnNpbmcgcnVs
ZXMsIGFuZAogICAgIC8vIDUuNSBXZWJWVFQgY3VlIHRleHQgRE9NIGNvbnN0cnVjdGlvbiBydWxl
cy4KLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdt
ZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgYXV0byBmcmFnbWVudCA9IERvY3VtZW50RnJh
Z21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKIAogICAgIGlmIChjdWVUZXh0LmlzRW1wdHkoKSkg
ewogICAgICAgICBmcmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG1fZG9j
dW1lbnQsIGVtcHR5U3RyaW5nKCkpKTsKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2Uo
KTsKKyAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogICAgIH0KIAotICAgIG1fY3VycmVudE5vZGUg
PSBmcmFnbWVudDsKKyAgICBtX2N1cnJlbnROb2RlID0gZnJhZ21lbnQucHRyKCk7CiAKICAgICBX
ZWJWVFRUb2tlbml6ZXIgdG9rZW5pemVyKGN1ZVRleHQpOwogICAgIG1fbGFuZ3VhZ2VTdGFjay5j
bGVhcigpOwpAQCAtMzk1LDEwICszOTUsMTAgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBXZWJWVFRUcmVlQnVpbGRlcjo6YnVpbGRGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY3UKICAg
ICB3aGlsZSAodG9rZW5pemVyLm5leHRUb2tlbihtX3Rva2VuKSkKICAgICAgICAgY29uc3RydWN0
VHJlZUZyb21Ub2tlbihtX2RvY3VtZW50KTsKICAgICAKLSAgICByZXR1cm4gZnJhZ21lbnQucmVs
ZWFzZSgpOworICAgIHJldHVybiBmcmFnbWVudDsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBXZWJWVFRQYXJzZXI6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3VlVGV4dChE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgY3VlVGV4dCkKK1JlZjxEb2N1bWVudEZy
YWdtZW50PiBXZWJWVFRQYXJzZXI6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3VlVGV4dChE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgY3VlVGV4dCkKIHsKICAgICBXZWJWVFRU
cmVlQnVpbGRlciB0cmVlQnVpbGRlcihkb2N1bWVudCk7CiAgICAgcmV0dXJuIHRyZWVCdWlsZGVy
LmJ1aWxkRnJvbVN0cmluZyhjdWVUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VFBhcnNlci5oCmluZGV4IDU3NmJhMDcxNzM2MTU3MDhlNDgwZWNmZDRiZTY2MzBiNTMwZDRkMzMu
LmUyYWQ1ZDc2ZjM5YmVmMGUyODEzZTJiNTZmMWJiNTlhOGI3ZDg1M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldE5ld1JlZ2lvbnMoVmVjdG9yPFJlZlB0cjxWVFRSZWdpb24+PiYpOwogCiAg
ICAgLy8gQ3JlYXRlIHRoZSBEb2N1bWVudEZyYWdtZW50IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBX
ZWJWVFQgY3VlIHRleHQuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KERvY3VtZW50JiwgY29uc3QgU3RyaW5n
Jik7CisgICAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVEb2N1bWVudEZyYWdt
ZW50RnJvbUN1ZVRleHQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKIAogcHJvdGVjdGVkOgog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278499</attachid>
            <date>2016-05-10 09:17:25 -0700</date>
            <delta_ts>2016-05-10 10:22:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157505-20160510091813.patch</filename>
            <type>text/plain</type>
            <size>157781</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExY2ExNDBiNDBhOGQ5YTcwODRlZTM1
N2QwOGJkNDg1Y2U0NTM2ZGUuLmQwNjNjZWRlMGRjYWMxMWMyNDJmMWY3MGZmNzJkNGUzYjU1MGE5
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDUtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIGEgbG90IG9mIGNhbGxzIHRvIFJlZlB0
cjo6cmVsZWFzZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTc1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHZXQgcmlkIG9mIGEgbG90IG9mIGNhbGxzIHRvIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCB1
c2UgV1RGTW92ZSgpIGluc3RlYWQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmdJ
bXBsLmNwcDoKKyAgICAgICAgKFdURjo6SGFzaEFuZFVURjhDaGFyYWN0ZXJzVHJhbnNsYXRvcjo6
dHJhbnNsYXRlKToKKyAgICAgICAgKiB3dGYvdGV4dC9DU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6Q1N0cmluZzo6Y29weUJ1ZmZlcklmTmVlZGVkKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YWxsb2NhdGVCdWZm
ZXIpOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphbGxvY2F0ZUJ1ZmZlclVwQ29udmVy
dCk6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OnNocmlua1RvRml0KToKKyAgICAgICAg
KiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmFwcGVuZCk6
CisgICAgICAgIChXVEY6OlN0cmluZzo6aW5zZXJ0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpy
ZW1vdmVJbnRlcm5hbCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAg
IChXVEY6OlN0cmluZzo6U3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV1RGOjpTdHJpbmc6OnJlbGVhc2VJbXBsKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nOjppc051bGwpOiBEZWxldGVkLgorCiAyMDE2LTA1LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW0NPQ09BXSBEaXNhYmxlIEhBVkVfRFRSQUNFIGF0IGJ1
aWxkIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNGUxZTI5YzRlOTZmNGE3MTU2MTg2NWRkMzcyNmVjMjFm
NmJmNTRmLi5mYmU1ZjFlMjcxNTAxMTZmYjMwNmZiZjljMTRmZjdjOWJiNDE0NTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjE0IEBACisyMDE2LTA1LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBhIGxvdCBvZiBjYWxscyB0byBSZWZQdHI6
OnJlbGVhc2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU3NTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgR2V0IHJpZCBvZiBhIGxvdCBvZiBjYWxscyB0byBSZWZQdHI6OnJlbGVhc2UoKSBhbmQgdXNl
IFdURk1vdmUoKSBpbnN0ZWFkLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjph
ZGRLZXlUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3Ip
OgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlR2VvcG9zaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3dJbmRleGVkRGF0YWJhc2U6OmRpc2Nvbm5lY3RGcmFtZUZvckRvY3VtZW50U3VzcGVuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OnJlY29ubmVj
dEZyYW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmNyZWF0ZU11bHRpRW50cnlB
cnJheSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
TGlzdDo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL0RP
TVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Tm90
aWZpY2F0aW9uczo6ZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OnJlY29ubmVjdEZyYW1lRnJvbURv
Y3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0
YWJhc2VCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6OnVud3JhcCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0SlNCbG9iKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9uT3B0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWxsTWVz
c2FnZVBvcnRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3Fs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRn
ZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIp
OgorICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTmluZVBp
ZWNlSW1hZ2VSZXBlYXQpOgorICAgICAgICAoV2ViQ29yZTo6Y291bnRlclRvQ1NTVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6
CisgICAgICAgICogY3NzL0NTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQpOgor
ICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAgICogY3Nz
L0NTU05hbWVkSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NOYW1lZEltYWdl
VmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlRmlsbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmlt
YXRpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlSW5zZXRS
b3VuZGVkQ29ybmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQYXJzZUNvbnRleHQ6OmNv
bW1pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2hhZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlU2xpY2VQYXJzZUNvbnRleHQ6OmNvbW1pdE51
bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJJbWFnZVF1YWRQYXJzZUNvbnRleHQ6OmNv
bW1pdE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQm9yZGVyUmFk
aXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb3VudGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lYXJHcmFkaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCdWlsdGluRmlsdGVyQXJndW1lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUZXh0SW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cG9wUnVsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpt
YXJrUnVsZUhlYWRlclN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRl
Vmlld3BvcnRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3Nz
L0NTU1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJWYWx1ZTo6
Y3JlYXRlQ1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlz
dDo6Y29weSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5oOgorICAgICAgICAqIGNzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3ZnUHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2FjaGVkT3JQZW5kaW5n
RnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGlu
Z0Zyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjdXJzb3JPclBl
bmRpbmdGcm9tVmFsdWUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAg
ICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpj
cmVhdGVDU1NPTVdyYXBwZXIpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAg
KiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpjcmVhdGUpOgorICAgICAg
ICAqIGRvbS9BdHRyLmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTm9kZXNMYXp5U25hcHNob3Q6Om5leHROb2RlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEZvY3VzZWRF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0YWtlRE9NV2luZG93RnJvbSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZSk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGV0
YWNoQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5v
ZGVOUyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVBdHRyKToKKyAgICAgICAg
KiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyk6CisgICAgICAgICogZG9tL05vZGVJdGVy
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6Om5leHROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjo6cHJldmlvdXNOb2RlKToKKyAgICAgICAgKiBk
b20vUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnByb2Nlc3NDb250ZW50c0Jl
dHdlZW5PZmZzZXRzKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpyZWJ1aWxkUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6Y3JlYXRlQmxvY2tFbGVt
ZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oOgorICAg
ICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVGb250U3R5bGVDaGFuZ2UpOgorICAgICAg
ICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBlbmRCbG9ja1BsYWNlaG9sZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnRCbG9ja1BsYWNl
aG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjphZGRCbG9j
a1BsYWNlaG9sZGVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENv
bW1hbmQ6Omluc2VydE5ld0RlZmF1bHRQYXJhZ3JhcGhFbGVtZW50QXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhDb250ZW50c1RvTmV3Qmxv
Y2tJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6
Y2xvbmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjp3cmFwcGluZ1N0eWxlRm9yU2VyaWFsaXph
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RQcm9wZXJ0aWVzTm90SW4pOgorICAgICAgICAo
V2ViQ29yZTo6YmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZ1N0eWxlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjppbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsT3JkZXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZmluZFN0cmluZ0FuZFNjcm9sbFRvVmlzaWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdlT2ZTdHJpbmcpOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFyYXRv
ckNvbW1hbmQ6OmNsb25lSGllcmFyY2h5VW5kZXJOZXdCbG9jayk6CisgICAgICAgICogZWRpdGlu
Zy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9N
ZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXJn
ZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5n
L01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6
SW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjppbmNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbCk6CisgICAgICAgICogZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaDoKKyAg
ICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW92ZU5vZGVDb21tYW5kOjpkb1VuYXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvUmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKToKKyAgICAg
ICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0RpY3Rp
b25hcnlMb29rdXAubW06CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUF0SGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpmaW5pc2hSZXF1ZXN0QXV0b2NvbXBs
ZXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlDaGFuZ2VkRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldENvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICog
aHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpnZXRDdWVB
c0hUTUwpOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpjcmVhdGVDdWVSZW5kZXJpbmdUcmVl
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2sv
V2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50OjpjcmVh
dGVFcXVpdmFsZW50SFRNTEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRURWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRyZWVCdWlsZGVyOjpidWlsZEZyb21TdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjcmVhdGVEb2N1bWVudEZyYWdtZW50RnJvbUN1ZVRleHQp
OgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmg6CisKIDIwMTYtMDUtMDkgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBOb3RpZmljYXRp
b24gY29uc3RydWN0b3IgdG8gdGFrZSBhbiBJREwgZGljdGlvbmFyeSBpbnN0ZWFkIG9mIGEgV2Vi
Q29yZTo6RGljdGlvbmFyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAK
aW5kZXggZmY0Y2YyMzFhZDY2NmQ1MzU2YTAzMGU5YzA0Y2U0ZjczYTU3MTdkZi4uOTA5NTMzYzk5
MDhmZTYwMGQxZThiOWU3MDNiY2Q4ZTM0ODM5OTI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZ0ltcGwuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEhhc2hBbmRVVEY4
Q2hhcmFjdGVyc1RyYW5zbGF0b3IgewogICAgICAgICBpZiAoaXNBbGxBU0NJSSkKICAgICAgICAg
ICAgIG5ld1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZShidWZmZXIuY2hhcmFjdGVycywgYnVm
ZmVyLmxlbmd0aCk7CiAKLSAgICAgICAgbG9jYXRpb24gPSBuZXdTdHJpbmcucmVsZWFzZSgpLmxl
YWtSZWYoKTsKKyAgICAgICAgbG9jYXRpb24gPSBuZXdTdHJpbmcubGVha1JlZigpOwogICAgICAg
ICBsb2NhdGlvbi0+c2V0SGFzaChoYXNoKTsKICAgICAgICAgbG9jYXRpb24tPnNldElzQXRvbWlj
KHRydWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwCmluZGV4IDAwMzMzMTgxNjJhMjUz
Zjg0MDQ3MmE5NGU4YWFhYmJjY2NhMmExMGYuLmQxZjE4NmI0YWYyNGIyMDVjNmU2YTliYWY4ZjFi
ODBkYzdkNmQ0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIENTdHJpbmc6OmNvcHlCdWZmZXJJZk5lZWRlZCgpCiAgICAgaWYgKCFtX2J1ZmZlciB8fCBt
X2J1ZmZlci0+aGFzT25lUmVmKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxDU3Ry
aW5nQnVmZmVyPiBidWZmZXIgPSBtX2J1ZmZlci5yZWxlYXNlKCk7CisgICAgUmVmUHRyPENTdHJp
bmdCdWZmZXI+IGJ1ZmZlciA9IFdURk1vdmUobV9idWZmZXIpOwogICAgIHNpemVfdCBsZW5ndGgg
PSBidWZmZXItPmxlbmd0aCgpOwogICAgIG1fYnVmZmVyID0gQ1N0cmluZ0J1ZmZlcjo6Y3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgpOwogICAgIG1lbWNweShtX2J1ZmZlci0+bXV0YWJsZURhdGEo
KSwgYnVmZmVyLT5kYXRhKCksIGxlbmd0aCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5jcHAKaW5kZXggODFjM2E4OGYyZjg4MTdjYjVhYzU0OWZmY2VlZGE2NmU5NmMzZGVmMi4u
NDZjMTliZjZmYjA4ZmQ1NDM5MmQwNmM2YzhiYzc2ODRmNmI0MDRjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCkBAIC05NywxMSArOTcsMTEgQEAgdm9pZCBTdHJpbmdCdWls
ZGVyOjphbGxvY2F0ZUJ1ZmZlcihjb25zdCBMQ2hhciogY3VycmVudENoYXJhY3RlcnMsIHVuc2ln
bmVkIHJlcXUKIHsKICAgICBBU1NFUlQobV9pczhCaXQpOwogICAgIC8vIENvcHkgdGhlIGV4aXN0
aW5nIGRhdGEgaW50byBhIG5ldyBidWZmZXIsIHNldCByZXN1bHQgdG8gcG9pbnQgdG8gdGhlIGVu
ZCBvZiB0aGUgZXhpc3RpbmcgZGF0YS4KLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gYnVmZmVyID0g
U3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChyZXF1aXJlZExlbmd0aCwgbV9idWZmZXJD
aGFyYWN0ZXJzOCk7CisgICAgYXV0byBidWZmZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRp
YWxpemVkKHJlcXVpcmVkTGVuZ3RoLCBtX2J1ZmZlckNoYXJhY3RlcnM4KTsKICAgICBtZW1jcHko
bV9idWZmZXJDaGFyYWN0ZXJzOCwgY3VycmVudENoYXJhY3RlcnMsIHN0YXRpY19jYXN0PHNpemVf
dD4obV9sZW5ndGgpICogc2l6ZW9mKExDaGFyKSk7IC8vIFRoaXMgY2FuJ3Qgb3ZlcmZsb3cuCiAg
ICAgCiAgICAgLy8gVXBkYXRlIHRoZSBidWlsZGVyIHN0YXRlLgotICAgIG1fYnVmZmVyID0gYnVm
ZmVyLnJlbGVhc2UoKTsKKyAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBtX3N0
cmluZyA9IFN0cmluZygpOwogfQogCkBAIC0xMTEsMTEgKzExMSwxMSBAQCB2b2lkIFN0cmluZ0J1
aWxkZXI6OmFsbG9jYXRlQnVmZmVyKGNvbnN0IFVDaGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5z
aWduZWQgcmVxdQogewogICAgIEFTU0VSVCghbV9pczhCaXQpOwogICAgIC8vIENvcHkgdGhlIGV4
aXN0aW5nIGRhdGEgaW50byBhIG5ldyBidWZmZXIsIHNldCByZXN1bHQgdG8gcG9pbnQgdG8gdGhl
IGVuZCBvZiB0aGUgZXhpc3RpbmcgZGF0YS4KLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gYnVmZmVy
ID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChyZXF1aXJlZExlbmd0aCwgbV9idWZm
ZXJDaGFyYWN0ZXJzMTYpOworICAgIGF1dG8gYnVmZmVyID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
bml0aWFsaXplZChyZXF1aXJlZExlbmd0aCwgbV9idWZmZXJDaGFyYWN0ZXJzMTYpOwogICAgIG1l
bWNweShtX2J1ZmZlckNoYXJhY3RlcnMxNiwgY3VycmVudENoYXJhY3RlcnMsIHN0YXRpY19jYXN0
PHNpemVfdD4obV9sZW5ndGgpICogc2l6ZW9mKFVDaGFyKSk7IC8vIFRoaXMgY2FuJ3Qgb3ZlcmZs
b3cuCiAgICAgCiAgICAgLy8gVXBkYXRlIHRoZSBidWlsZGVyIHN0YXRlLgotICAgIG1fYnVmZmVy
ID0gYnVmZmVyLnJlbGVhc2UoKTsKKyAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAg
ICBtX3N0cmluZyA9IFN0cmluZygpOwogfQogCkBAIC0xMjUsMTQgKzEyNSwxNCBAQCB2b2lkIFN0
cmluZ0J1aWxkZXI6OmFsbG9jYXRlQnVmZmVyVXBDb252ZXJ0KGNvbnN0IExDaGFyKiBjdXJyZW50
Q2hhcmFjdGVycywgdW5zaQogewogICAgIEFTU0VSVChtX2lzOEJpdCk7CiAgICAgLy8gQ29weSB0
aGUgZXhpc3RpbmcgZGF0YSBpbnRvIGEgbmV3IGJ1ZmZlciwgc2V0IHJlc3VsdCB0byBwb2ludCB0
byB0aGUgZW5kIG9mIHRoZSBleGlzdGluZyBkYXRhLgotICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBi
dWZmZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHJlcXVpcmVkTGVuZ3RoLCBt
X2J1ZmZlckNoYXJhY3RlcnMxNik7CisgICAgYXV0byBidWZmZXIgPSBTdHJpbmdJbXBsOjpjcmVh
dGVVbmluaXRpYWxpemVkKHJlcXVpcmVkTGVuZ3RoLCBtX2J1ZmZlckNoYXJhY3RlcnMxNik7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpCiAgICAgICAgIG1fYnVm
ZmVyQ2hhcmFjdGVyczE2W2ldID0gY3VycmVudENoYXJhY3RlcnNbaV07CiAgICAgCiAgICAgbV9p
czhCaXQgPSBmYWxzZTsKICAgICAKICAgICAvLyBVcGRhdGUgdGhlIGJ1aWxkZXIgc3RhdGUuCi0g
ICAgbV9idWZmZXIgPSBidWZmZXIucmVsZWFzZSgpOworICAgIG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOwogICAgIG1fc3RyaW5nID0gU3RyaW5nKCk7CiB9CiAKQEAgLTM1Nyw3ICszNTcsNyBA
QCB2b2lkIFN0cmluZ0J1aWxkZXI6OnNocmlua1RvRml0KCkKICAgICAgICAgICAgIHJlYWxsb2Nh
dGVCdWZmZXI8TENoYXI+KG1fbGVuZ3RoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVh
bGxvY2F0ZUJ1ZmZlcjxVQ2hhcj4obV9sZW5ndGgpOwotICAgICAgICBtX3N0cmluZyA9IG1fYnVm
ZmVyLnJlbGVhc2UoKTsKKyAgICAgICAgbV9zdHJpbmcgPSBXVEZNb3ZlKG1fYnVmZmVyKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCA3OTkxZjQ3MGZhMTcwNzBh
MWEyZjQ3OWQwZjI2N2I1NTlmMjUxZWM2Li5mMzFhYWM3NmMyNDg4MDRhNzNlNWY0MDM5NzlkOTRm
M2I4OTBhMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC0xMDAsMTkgKzEwMCwx
OSBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQogICAgICAgICAgICAg
ICAgIExDaGFyKiBkYXRhOwogICAgICAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoKCkgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBtX2ltcGwtPmxlbmd0aCgpKQogICAg
ICAgICAgICAgICAgICAgICBDUkFTSCgpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxTdHJpbmdJ
bXBsPiBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2ltcGwtPmxl
bmd0aCgpICsgc3RyLmxlbmd0aCgpLCBkYXRhKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5ld0lt
cGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVuZ3RoKCkgKyBz
dHIubGVuZ3RoKCksIGRhdGEpOwogICAgICAgICAgICAgICAgIG1lbWNweShkYXRhLCBtX2ltcGwt
PmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsKICAgICAg
ICAgICAgICAgICBtZW1jcHkoZGF0YSArIG1faW1wbC0+bGVuZ3RoKCksIHN0ci5jaGFyYWN0ZXJz
OCgpLCBzdHIubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsKLSAgICAgICAgICAgICAgICBtX2lt
cGwgPSBuZXdJbXBsLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtX2ltcGwgPSBXVEZNb3Zl
KG5ld0ltcGwpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIFVDaGFyKiBkYXRhOwogICAgICAgICAgICAgaWYgKHN0ci5sZW5ndGgoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIG1faW1wbC0+bGVuZ3RoKCkpCiAgICAg
ICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdJ
bXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2ltcGwtPmxlbmd0aCgpICsg
c3RyLmxlbmd0aCgpLCBkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0lt
cGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIHN0ci5sZW5ndGgoKSwg
ZGF0YSk7CiAgICAgICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEpOwogICAgICAgICAgICAgU3RyaW5nVmlldyhzdHIpLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBtX2ltcGwtPmxlbmd0aCgpKTsKLSAgICAgICAgICAgIG1f
aW1wbCA9IG5ld0ltcGwucmVsZWFzZSgpOworICAgICAgICAgICAgbV9pbXBsID0gV1RGTW92ZShu
ZXdJbXBsKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2ltcGwgPSBzdHIubV9pbXBs
OwogICAgIH0KQEAgLTEzMywxMCArMTMzLDEwIEBAIHZvaWQgU3RyaW5nOjphcHBlbmQoTENoYXIg
Y2hhcmFjdGVyKQogICAgIGlmIChtX2ltcGwtPmxlbmd0aCgpID49IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgQ1JBU0goKTsKICAgICBMQ2hhciogZGF0YTsK
LSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIDEsIGRhdGEpOworICAgIGF1dG8gbmV3SW1wbCA9
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIDEsIGRh
dGEpOwogICAgIG1lbWNweShkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVu
Z3RoKCkpOwogICAgIGRhdGFbbV9pbXBsLT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7Ci0gICAgbV9p
bXBsID0gbmV3SW1wbC5yZWxlYXNlKCk7CisgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsK
IH0KIAogdm9pZCBTdHJpbmc6OmFwcGVuZChVQ2hhciBjaGFyYWN0ZXIpCkBAIC0xNTQsMTAgKzE1
NCwxMCBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKFVDaGFyIGNoYXJhY3RlcikKICAgICBpZiAobV9p
bXBsLT5sZW5ndGgoKSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgICAgIENSQVNIKCk7CiAgICAgVUNoYXIqIGRhdGE7Ci0gICAgUmVmUHRyPFN0cmluZ0ltcGw+
IG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVuZ3Ro
KCkgKyAxLCBkYXRhKTsKKyAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkKG1faW1wbC0+bGVuZ3RoKCkgKyAxLCBkYXRhKTsKICAgICBTdHJpbmdWaWV3KCpt
X2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOwogICAgIGRhdGFbbV9pbXBs
LT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7Ci0gICAgbV9pbXBsID0gbmV3SW1wbC5yZWxlYXNlKCk7
CisgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKIH0KIAogaW50IGNvZGVQb2ludENvbXBh
cmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCkBAIC0xODcsMjEgKzE4NywyMSBA
QCB2b2lkIFN0cmluZzo6aW5zZXJ0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBwb3Np
dGlvbikKICAgICBpZiAobGVuZ3RoVG9JbnNlcnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkgLSBsZW5ndGgoKSkKICAgICAgICAgQ1JBU0goKTsKIAotICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiBuZXdTdHJpbmc7CiAgICAgaWYgKGlzOEJpdCgpICYmIHN0cmluZy5pczhCaXQo
KSkgewogICAgICAgICBMQ2hhciogZGF0YTsKLSAgICAgICAgbmV3U3RyaW5nID0gU3RyaW5nSW1w
bDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgoKSArIGxlbmd0aFRvSW5zZXJ0LCBkYXRhKTsK
KyAgICAgICAgYXV0byBuZXdTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVk
KGxlbmd0aCgpICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwogICAgICAgICBTdHJpbmdWaWV3KCpt
X2ltcGwpLnN1YnN0cmluZygwLCBwb3NpdGlvbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQo
ZGF0YSk7CiAgICAgICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydChkYXRhICsgcG9zaXRpb24pOwogICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLnN1YnN0
cmluZyhwb3NpdGlvbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9u
ICsgbGVuZ3RoVG9JbnNlcnQpOworICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld1N0cmluZyk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUNoYXIqIGRhdGE7Ci0gICAgICAgIG5ld1N0cmluZyA9
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCkgKyBsZW5ndGhUb0luc2Vy
dCwgZGF0YSk7CisgICAgICAgIGF1dG8gbmV3U3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
bml0aWFsaXplZChsZW5ndGgoKSArIGxlbmd0aFRvSW5zZXJ0LCBkYXRhKTsKICAgICAgICAgU3Ry
aW5nVmlldygqbV9pbXBsKS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEpOwogICAgICAgICBTdHJpbmdWaWV3KHN0cmluZykuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9uKTsKICAgICAgICAgU3RyaW5nVmlldygqbV9p
bXBsKS5zdWJzdHJpbmcocG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEg
KyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0KTsKKyAgICAgICAgbV9pbXBsID0gV1RGTW92ZShu
ZXdTdHJpbmcpOwogICAgIH0KLSAgICBtX2ltcGwgPSBuZXdTdHJpbmcucmVsZWFzZSgpOwogfQog
CiB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVu
c2lnbmVkIGxlbmd0aFRvQXBwZW5kKQpAQCAtMjI2LDIwICsyMjYsMjAgQEAgdm9pZCBTdHJpbmc6
OmFwcGVuZChjb25zdCBMQ2hhciogY2hhcmFjdGVyc1RvQXBwZW5kLCB1bnNpZ25lZCBsZW5ndGhU
b0FwcGVuZCkKICAgICAgICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpIC0gc3RyTGVuZ3RoKQogICAgICAgICAgICAgQ1JBU0goKTsKICAg
ICAgICAgTENoYXIqIGRhdGE7Ci0gICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdJbXBsID0g
U3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChzdHJMZW5ndGggKyBsZW5ndGhUb0FwcGVu
ZCwgZGF0YSk7CisgICAgICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoc3RyTGVuZ3RoICsgbGVuZ3RoVG9BcHBlbmQsIGRhdGEpOwogICAgICAgICBTdHJp
bmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBzdHJMZW5ndGgp
OwogICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSArIHN0ckxlbmd0aCwgY2hhcmFj
dGVyc1RvQXBwZW5kLCBsZW5ndGhUb0FwcGVuZCk7Ci0gICAgICAgIG1faW1wbCA9IG5ld0ltcGwu
cmVsZWFzZSgpOworICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpIC0gc3RyTGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwogICAg
IFVDaGFyKiBkYXRhOwotICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdJbXBsID0gU3RyaW5nSW1w
bDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgoKSArIGxlbmd0aFRvQXBwZW5kLCBkYXRhKTsK
KyAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCgpICsgbGVuZ3RoVG9BcHBlbmQsIGRhdGEpOwogICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhk
YXRhLCBtX2ltcGwtPmNoYXJhY3RlcnMxNigpLCBzdHJMZW5ndGgpOwogICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFycyhkYXRhICsgc3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0aFRv
QXBwZW5kKTsKLSAgICBtX2ltcGwgPSBuZXdJbXBsLnJlbGVhc2UoKTsKKyAgICBtX2ltcGwgPSBX
VEZNb3ZlKG5ld0ltcGwpOwogfQogCiB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0aFRvQXBwZW5kKQpAQCAtMjYyLDEzICsy
NjIsMTMgQEAgdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBVQ2hhciogY2hhcmFjdGVyc1RvQXBw
ZW5kLCB1bnNpZ25lZCBsZW5ndGhUb0FwcGVuZCkKICAgICBpZiAobGVuZ3RoVG9BcHBlbmQgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzdHJMZW5ndGgpCiAgICAgICAg
IENSQVNIKCk7CiAgICAgVUNoYXIqIGRhdGE7Ci0gICAgUmVmUHRyPFN0cmluZ0ltcGw+IG5ld0lt
cGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHN0ckxlbmd0aCArIGxlbmd0aFRv
QXBwZW5kLCBkYXRhKTsKKyAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkKHN0ckxlbmd0aCArIGxlbmd0aFRvQXBwZW5kLCBkYXRhKTsKICAgICBpZiAobV9p
bXBsLT5pczhCaXQoKSkKICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEsIGNoYXJh
Y3RlcnM4KCksIHN0ckxlbmd0aCk7CiAgICAgZWxzZQogICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcnMoZGF0YSwgY2hhcmFjdGVyczE2KCksIHN0ckxlbmd0aCk7CiAgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJzKGRhdGEgKyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9B
cHBlbmQpOwotICAgIG1faW1wbCA9IG5ld0ltcGwucmVsZWFzZSgpOworICAgIG1faW1wbCA9IFdU
Rk1vdmUobmV3SW1wbCk7CiB9CiAKIApAQCAtMjg5LDEyICsyODksMTIgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+CiBpbmxpbmUgdm9pZCBTdHJpbmc6OnJlbW92ZUludGVybmFs
KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHBvc2l0aW9uLCBpbnQg
bGVuZ3RoVG9SZW1vdmUpCiB7CiAgICAgQ2hhcmFjdGVyVHlwZSogZGF0YTsKLSAgICBSZWZQdHI8
U3RyaW5nSW1wbD4gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVu
Z3RoKCkgLSBsZW5ndGhUb1JlbW92ZSwgZGF0YSk7CisgICAgYXV0byBuZXdJbXBsID0gU3RyaW5n
SW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgoKSAtIGxlbmd0aFRvUmVtb3ZlLCBkYXRh
KTsKICAgICBtZW1jcHkoZGF0YSwgY2hhcmFjdGVycywgcG9zaXRpb24gKiBzaXplb2YoQ2hhcmFj
dGVyVHlwZSkpOwogICAgIG1lbWNweShkYXRhICsgcG9zaXRpb24sIGNoYXJhY3RlcnMgKyBwb3Np
dGlvbiArIGxlbmd0aFRvUmVtb3ZlLAogICAgICAgICAobGVuZ3RoKCkgLSBsZW5ndGhUb1JlbW92
ZSAtIHBvc2l0aW9uKSAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7CiAKLSAgICBtX2ltcGwgPSBu
ZXdJbXBsLnJlbGVhc2UoKTsKKyAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogfQogCiB2
b2lkIFN0cmluZzo6cmVtb3ZlKHVuc2lnbmVkIHBvc2l0aW9uLCBpbnQgbGVuZ3RoVG9SZW1vdmUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCAxYzQzZGUwYWY0ZmQzZDY0ZmIzYjEwMGU0Y2Ex
MmZhOTIyOWMzOTcwLi5lZjYyMWZjNDEzMzQ5ZTY5NmQ3NWFmZmE3Mzk4YmIwMTM1NjA5YjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTEyNSwxMCArMTI1LDE0IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFdlIGhhdmUgdG8gZGVjbGFyZSB0aGUgY29weSBjb25zdHJ1Y3RvciBhbmQgY29weSBh
c3NpZ25tZW50IG9wZXJhdG9yIGFzIHdlbGwsIG90aGVyd2lzZQogICAgIC8vIHRoZXknbGwgYmUg
aW1wbGljaXRseSBkZWxldGVkIGJ5IGFkZGluZyB0aGUgbW92ZSBjb25zdHJ1Y3RvciBhbmQgbW92
ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIFN0cmluZyhjb25zdCBTdHJpbmcmIG90aGVyKSA6
IG1faW1wbChvdGhlci5tX2ltcGwpIHsgfQotICAgIFN0cmluZyhTdHJpbmcmJiBvdGhlcikgOiBt
X2ltcGwob3RoZXIubV9pbXBsLnJlbGVhc2UoKSkgeyB9CisgICAgU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgb3RoZXIpCisgICAgICAgIDogbV9pbXBsKG90aGVyLm1faW1wbCkKKyAgICB7IH0KKyAgICBT
dHJpbmcoU3RyaW5nJiYgb3RoZXIpCisgICAgICAgIDogbV9pbXBsKFdURk1vdmUob3RoZXIubV9p
bXBsKSkKKyAgICB7IH0KICAgICBTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmIG90aGVy
KSB7IG1faW1wbCA9IG90aGVyLm1faW1wbDsgcmV0dXJuICp0aGlzOyB9Ci0gICAgU3RyaW5nJiBv
cGVyYXRvcj0oU3RyaW5nJiYgb3RoZXIpIHsgbV9pbXBsID0gb3RoZXIubV9pbXBsLnJlbGVhc2Uo
KTsgcmV0dXJuICp0aGlzOyB9CisgICAgU3RyaW5nJiBvcGVyYXRvcj0oU3RyaW5nJiYgb3RoZXIp
IHsgbV9pbXBsID0gV1RGTW92ZShvdGhlci5tX2ltcGwpOyByZXR1cm4gKnRoaXM7IH0KIAogICAg
IC8vIElubGluZSB0aGUgZGVzdHJ1Y3Rvci4KICAgICBBTFdBWVNfSU5MSU5FIH5TdHJpbmcoKSB7
IH0KQEAgLTE0NCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gIW1faW1wbCB8fCAhbV9pbXBsLT5sZW5ndGgoKTsgfQogCiAgICAgU3RyaW5nSW1w
bCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5nZXQoKTsgfQotICAgIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gcmVsZWFzZUltcGwoKSB7IHJldHVybiBtX2ltcGwucmVsZWFzZSgpOyB9Cisg
ICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlbGVhc2VJbXBsKCkgeyByZXR1cm4gV1RGTW92ZShtX2lt
cGwpOyB9CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmNwcAppbmRleCA5MWFjMGJjMWE0NjM0YTVmNGFiNjIxZjM2Y2JjYjdjNjQ1ZDUwMmZjLi5lMTdk
NzM3NTk0ODM2MjY2ZTAxZTJiZGM2NjBiZjk3YWY0OGE2ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3Bw
CkBAIC0xODYsOSArMTg2LDkgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmly
ZWQoKQogCiAgICAgICAgIC8vIDIuNy4gSWYgZGlkIHN0b3JlIGtleSBpcyB0cnVlLCBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXlhZGRlZCBhdCB0aGUgTWVkaWFL
ZXlTZXNzaW9uIG9iamVjdC4KICAgICAgICAgaWYgKGRpZFN0b3JlS2V5KSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8RXZlbnQ+IGtleWFkZGVkRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS53ZWJraXRrZXlhZGRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgYXV0byBr
ZXlhZGRlZEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5YWRkZWRF
dmVudCwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgICAgIGtleWFkZGVkRXZlbnQtPnNldFRhcmdl
dCh0aGlzKTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChrZXlh
ZGRlZEV2ZW50LnJlbGVhc2UoKSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShrZXlhZGRlZEV2ZW50KSk7CiAKICAgICAgICAgICAgIGtleXMoKS0+
a2V5QWRkZWQoKTsKICAgICAgICAgfQpAQCAtMjA5LDkgKzIwOSw5IEBAIHZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjphZGRLZXlUaW1lckZpcmVkKCkKIAogdm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRN
ZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKIHsKLSAg
ICBSZWZQdHI8TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVkaWFLZXlNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5bWVzc2FnZUV2ZW50LCBtZXNzYWdlLCBk
ZXN0aW5hdGlvblVSTCk7CisgICAgYXV0byBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VFdmVudCwgbWVzc2FnZSwgZGVzdGlu
YXRpb25VUkwpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9hc3luY0V2ZW50
UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0V2ZW50UXVl
dWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogdm9pZCBNZWRpYUtleVNlc3Np
b246OnNlbmRFcnJvcihDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSBlcnJvckNv
ZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpCkBAIC0yMTksOSArMjE5LDkgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnNlbmRFcnJvcihDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSBl
cnJvckNvZGUsIHUKICAgICBSZWY8TWVkaWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtleUVycm9y
OjpjcmVhdGUoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKS5nZXQoKTsKICAgICBzZXRFcnJvcihlcnJv
ci5wdHIoKSk7CiAKLSAgICBSZWZQdHI8RXZlbnQ+IGtleWVycm9yRXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAg
IGF1dG8ga2V5ZXJyb3JFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtl
eWVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAga2V5ZXJyb3JFdmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChrZXllcnJvckV2ZW50
LnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUo
a2V5ZXJyb3JFdmVudCkpOwogfQogCiBTdHJpbmcgTWVkaWFLZXlTZXNzaW9uOjptZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggZmIxMjExY2VhYjZkZmRlZjc0NzI1N2Jk
NmI3ODZhMzFmZGViOGI1Ni4uNzYzZDYwNTkxYjFiZmQwZjE3YjQwZGZmOGYzMzc0MzI1MjFkYzJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbi5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIFJlZlB0cjxHZW9wb3NpdGlvbj4gY3Jl
YXRlR2VvcG9zaXRpb24oR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiAgICAgUmVmUHRy
PENvb3JkaW5hdGVzPiBjb29yZGluYXRlcyA9IENvb3JkaW5hdGVzOjpjcmVhdGUocG9zaXRpb24t
PmxhdGl0dWRlKCksIHBvc2l0aW9uLT5sb25naXR1ZGUoKSwgcG9zaXRpb24tPmNhblByb3ZpZGVB
bHRpdHVkZSgpLCBwb3NpdGlvbi0+YWx0aXR1ZGUoKSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24tPmFjY3VyYWN5KCks
IHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSgpLCBwb3NpdGlvbi0+YWx0aXR1
ZGVBY2N1cmFjeSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGluZygpLCBwb3NpdGlvbi0+
aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVkKCksIHBvc2l0aW9uLT5zcGVlZCgp
KTsKLSAgICByZXR1cm4gR2VvcG9zaXRpb246OmNyZWF0ZShjb29yZGluYXRlcy5yZWxlYXNlKCks
IGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAocG9zaXRpb24tPnRpbWVzdGFtcCgpKSk7Cisg
ICAgcmV0dXJuIEdlb3Bvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb29yZGluYXRlcyksIGNvbnZl
cnRTZWNvbmRzVG9ET01UaW1lU3RhbXAocG9zaXRpb24tPnRpbWVzdGFtcCgpKSk7CiB9CiAKIHN0
YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3JlYXRlUG9zaXRpb25FcnJvcihHZW9sb2NhdGlvbkVy
cm9yKiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGNlNWY1MDBmZTFiMjY4
OTg5NGUxNzExZGY4MWE2MzNmYjAwMWEyYjkuLjk4NzBhOGZmOWY2M2E1OTA1NGNkODgxODk3ZWI5
YzAzZjU5NmMzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNjUsMTQgKzY1LDE0
IEBAIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpm
cm9tKERPTVdpbmRvdyogd2luZG93KQogCiB2b2lkIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6
ZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkKIHsKLSAgICBtX3N1c3BlbmRl
ZElEQkZhY3RvcnkgPSBtX2lkYkZhY3RvcnkucmVsZWFzZSgpOworICAgIG1fc3VzcGVuZGVkSURC
RmFjdG9yeSA9IFdURk1vdmUobV9pZGJGYWN0b3J5KTsKICAgICBET01XaW5kb3dQcm9wZXJ0eTo6
ZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCk7CiB9CiAKIHZvaWQgRE9NV2lu
ZG93SW5kZXhlZERhdGFiYXNlOjpyZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24o
RnJhbWUqIGZyYW1lKQogewogICAgIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZy
b21Eb2N1bWVudFN1c3BlbnNpb24oZnJhbWUpOwotICAgIG1faWRiRmFjdG9yeSA9IG1fc3VzcGVu
ZGVkSURCRmFjdG9yeS5yZWxlYXNlKCk7CisgICAgbV9pZGJGYWN0b3J5ID0gV1RGTW92ZShtX3N1
c3BlbmRlZElEQkZhY3RvcnkpOwogfQogCiB2b2lkIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6
d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5LmgKaW5kZXggOTllMzhiYTQxYzdkYzJhOWVjNjBkNGIwNDA0
ZWVmMzJkMmUzMWJjMS4uNTVlNDI2ZjFkNWY3MjM3MTRmNDE2MzQzMDBjNDdiZTdmNDBmNzBlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJLZXkoS2V5VHlw
ZTo6RGF0ZSwgZGF0ZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4g
Y3JlYXRlTXVsdGlFbnRyeUFycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4mIGFycmF5
KQorICAgIHN0YXRpYyBSZWY8SURCS2V5PiBjcmVhdGVNdWx0aUVudHJ5QXJyYXkoY29uc3QgVmVj
dG9yPFJlZlB0cjxJREJLZXk+PiYgYXJyYXkpCiAgICAgewogICAgICAgICBWZWN0b3I8UmVmUHRy
PElEQktleT4+IHJlc3VsdDsKIApAQCAtODEsOSArODEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgc2l6ZUVzdGltYXRlICs9IGtleS0+bV9zaXplRXN0aW1hdGU7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5ID0gYWRvcHRSZWYobmV3
IElEQktleShyZXN1bHQsIHNpemVFc3RpbWF0ZSkpOworICAgICAgICBSZWY8SURCS2V5PiBpZGJL
ZXkgPSBhZG9wdFJlZigqbmV3IElEQktleShyZXN1bHQsIHNpemVFc3RpbWF0ZSkpOwogICAgICAg
ICBBU1NFUlQoaWRiS2V5LT5pc1ZhbGlkKCkpOwotICAgICAgICByZXR1cm4gaWRiS2V5LnJlbGVh
c2UoKTsKKyAgICAgICAgcmV0dXJuIGlkYktleTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPElE
QktleT4gY3JlYXRlQXJyYXkoY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiYgYXJyYXkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3Bw
CmluZGV4IDQxNDI4NzljNWMzZDE4MDZhNDc0YjZhYTdlYzhhMzk2MTBiZWVlNjkuLmUyODQ5YWVj
ZDM5ODk3MGI2YmFiZDY3MThiNDI4Nzg5MDMxMzZjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC04NjcsMTAgKzg2Nywx
MCBAQCBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4gTWVkaWFTb3VyY2U6OmNyZWF0ZVNvdXJj
ZUJ1ZmZlclByaXZhdGUoY29uc3QgQ29udGVudAogCiB2b2lkIE1lZGlhU291cmNlOjpzY2hlZHVs
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIFJlZlB0cjxFdmVu
dD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBh
dXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSk7CiAgICAg
ZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVF
dmVudChldmVudC5yZWxlYXNlKCkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVu
dChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU291
cmNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCBjYzJkM2I4ZGJj
ZDdmNmUxMGM2OTE0MjYyODQ3NGQyNDFjNmVjMjQwLi45NjIyZjc4YmRhMzExODM2NjIwNjYzMjIx
ZTYyYjIxOWM3MDkzMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC00ODcsMTAgKzQ4NywxMCBAQCBib29sIFNvdXJj
ZUJ1ZmZlcjo6aXNSZW1vdmVkKCkgY29uc3QKIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNjaGVkdWxl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgUmVmUHRyPEV2ZW50
PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgZmFsc2UpOworICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKTsKICAgICBl
dmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2
ZW50KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50
KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlcklu
dGVybmFsKHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyTGlzdC5jcHAKaW5kZXggZjY0YWYyMTk0NGFlMjdhNDUxNWNmNWEyYTNmZDZjYjZl
ODZlMTQ3Zi4uNTViZjM3NDI1YmJmOTYxOWEwZDVhMmUyM2JiNTA3ZWUyMDViNzYxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ckxpc3QuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJMaXN0Ojpzd2Fw
KFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj4mIG90aGVyKQogCiB2b2lkIFNvdXJjZUJ1ZmZl
ckxpc3Q6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0g
ICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwg
ZmFsc2UpOworICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2Us
IGZhbHNlKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50
UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0V2ZW50UXVl
dWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5jcHAKaW5kZXggMGRhNDg5ZDdlNWEyNzc3ZmI4YzFhNzE1MTQyNjNkMjUxZjc1ODNk
My4uNDUyZWY1MTMxMjQzNWE1ZTU1MDRiMjAzNzE1Yzk5OWQwNzZlY2E1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmNwcApAQCAtNzAsMTQgKzcwLDE0IEBAIE5vdGlmaWNhdGlvbkNlbnRl
ciogRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhET01XaW5kb3cm
IHdpbmRvCiAKIHZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZGlzY29ubmVjdEZyYW1lRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkKIHsKLSAgICBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRl
ciA9IG1fbm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKKyAgICBtX3N1c3BlbmRlZE5vdGlm
aWNhdGlvbkNlbnRlciA9IFdURk1vdmUobV9ub3RpZmljYXRpb25DZW50ZXIpOwogICAgIERPTVdp
bmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWVGb3JEb2N1bWVudFN1c3BlbnNpb24oKTsKIH0K
IAogdm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjpyZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVu
dFN1c3BlbnNpb24oRnJhbWUqIGZyYW1lKQogewogICAgIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNv
bm5lY3RGcmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oZnJhbWUpOwotICAgIG1fbm90aWZpY2F0
aW9uQ2VudGVyID0gbV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOworICAg
IG1fbm90aWZpY2F0aW9uQ2VudGVyID0gV1RGTW92ZShtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNl
bnRlcik7CiB9CiAKIHZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RJbkNhY2hlZEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBhNzEzYzZiYzE4Y2M5YmE4
ZWI0MjhiZjQ3YmU0M2ZjOTJmMDMxOTBhLi5hZmM3ODhmMjQzMGEyMzA3NzdmMjgzYjRmMGEzYTE0
ZWY3YmEwM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIHZvaWQg
bG9nT3BlbkRhdGFiYXNlRXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJgogICAgICAgICBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKIH0KIAotUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2VNYW5h
Z2VyOjpvcGVuRGF0YWJhc2VCYWNrZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgYm9vbCBz
ZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYgZXJyb3IsIFN0cmluZyYgZXJy
b3JNZXNzYWdlKQorUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFz
ZUJhY2tlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5ld0Rh
dGFiYXNlLCBEYXRhYmFzZUVycm9yJiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAg
ICAgQVNTRVJUKGVycm9yID09IERhdGFiYXNlRXJyb3I6Ok5vbmUpOwogCkBAIC0yMTcsMTEgKzIx
NywxMSBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFz
ZUJhY2tlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICBjYXNlIERhdGFiYXNlRXJy
b3I6OkRhdGFiYXNlU2l6ZU92ZXJmbG93ZWQ6CiAgICAgICAgIGNhc2UgRGF0YWJhc2VFcnJvcjo6
R2VuZXJpY1NlY3VyaXR5RXJyb3I6CiAgICAgICAgICAgICBsb2dPcGVuRGF0YWJhc2VFcnJvcihj
b250ZXh0LCBuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAgICAgY2FzZSBEYXRhYmFzZUVycm9yOjpJbnZhbGlkRGF0YWJhc2VT
dGF0ZToKICAgICAgICAgICAgIGxvZ0Vycm9yTWVzc2FnZShjb250ZXh0LCBlcnJvck1lc3NhZ2Up
OwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICBjYXNlIERhdGFiYXNlRXJyb3I6OkRhdGFiYXNlU2l6ZUV4Y2VlZGVkUXVvdGE6CiAg
ICAgICAgICAgICAvLyBOb3RpZnkgdGhlIGNsaWVudCB0aGF0IHdlJ3ZlIGV4Y2VlZGVkIHRoZSBk
YXRhYmFzZSBxdW90YS4KQEAgLTI0NSwxNSArMjQ1LDE1IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+
IERhdGFiYXNlTWFuYWdlcjo6b3BlbkRhdGFiYXNlQmFja2VuZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0CiAKICAgICAgICAgICAgIGlmIChlcnJvciA9PSBEYXRhYmFzZUVycm9yOjpJbnZhbGlkRGF0
YWJhc2VTdGF0ZSkgewogICAgICAgICAgICAgICAgIGxvZ0Vycm9yTWVzc2FnZShjb250ZXh0LCBl
cnJvck1lc3NhZ2UpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBsb2dPcGVuRGF0
YWJhc2VFcnJvcihjb250ZXh0LCBuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gYmFj
a2VuZC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJhY2tlbmQ7CiB9CiAKIHZvaWQgRGF0YWJhc2VN
YW5hZ2VyOjphZGRQcm9wb3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UqIHByb3Bvc2VkRGIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuaAppbmRleCBiOGQ2N2FkYjNjNjM2OTMxMDcwZWY3YzQ0YzVhYjdlY2Q5ZThiM2I5Li40
MWNkN2ZlNzVkN2QxY2Q1ZGNhN2E3YTMxZDE3MDY2MzE5MmVkNmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKQEAgLTEy
OCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIC8vIGl0IGFscmVhZHkgZXhpc3QgcHJldmlvdXNs
eS4gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIDAuCiAgICAgUmVmUHRyPERhdGFiYXNlQ29udGV4dD4g
ZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0g
ICAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlQmFja2VuZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVy
c2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiwgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOworICAgIFJlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlQmFja2Vu
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFz
ZUVycm9yJiwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiAgICAgdm9pZCBhZGRQcm9wb3NlZERh
dGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UqKTsKICAgICB2b2lkIHJlbW92ZVByb3Bvc2VkRGF0YWJh
c2UoUHJvcG9zZWREYXRhYmFzZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKaW5kZXggMzJkZDA2YjQxNTg5MGY1
Njg4N2U0NWFjYjBlYWNjZDQzYWVjNWExOC4uY2E2NjU4MTBiYTYwZDE2Y2M3NDFlMThkZTQ1ODZj
ZTg0NzA0OTI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxDYWxsYmFja1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCkBAIC04MSwxMiArODEsMTIgQEAgcHVibGljOgog
ICAgICAgICB9KTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFQ+IHVud3JhcCgpCisgICAgUmVm
UHRyPFQ+IHVud3JhcCgpCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4
KTsKICAgICAgICAgQVNTRVJUKCFtX2NhbGxiYWNrIHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBudWxscHRyOwotICAgICAgICByZXR1cm4gbV9jYWxsYmFjay5yZWxlYXNlKCk7CisgICAgICAg
IHJldHVybiBXVEZNb3ZlKG1fY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8vIFVzZWZ1bCBmb3Ig
b3B0aW1pemF0aW9ucyBvbmx5LCBwbGVhc2UgdGVzdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHVud3Jh
cCB0byBiZSBzdXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGE2ZWVlZjk4YzdjNTVlYmE0MjNiZDg4ZDRh
ZDg2ZmI1NDcwMDYwOTIuLjE1ZTI3YTA5NmYzYmIzNzVhNDI1NTYxZWU5NjU2YzRjODcwYTZjZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogICAgIGZyYW1lLT5vcENv
ZGUgPSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlVGV4dDsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0g
UXVldWVkRnJhbWVUeXBlU3RyaW5nOwogICAgIGZyYW1lLT5zdHJpbmdEYXRhID0gc3RyaW5nOwot
ICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLmFwcGVuZChmcmFtZS5yZWxlYXNlKCkpOworICAgIG1f
b3V0Z29pbmdGcmFtZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGZyYW1lKSk7CiB9CiAKIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BD
b2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKQEAgLTcxMSw3ICs3MTEs
NyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhcgogICAgIGZyYW1lLT52ZWN0b3JEYXRhLnJlc2l6
ZShkYXRhTGVuZ3RoKTsKICAgICBpZiAoZGF0YUxlbmd0aCkKICAgICAgICAgbWVtY3B5KGZyYW1l
LT52ZWN0b3JEYXRhLmRhdGEoKSwgZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgbV9vdXRnb2luZ0Zy
YW1lUXVldWUuYXBwZW5kKGZyYW1lLnJlbGVhc2UoKSk7CisgICAgbV9vdXRnb2luZ0ZyYW1lUXVl
dWUuYXBwZW5kKFdURk1vdmUoZnJhbWUpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpl
bnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBCbG9iJiBibG9i
KQpAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgQmxvYiYgYmxvCiAgICAgZnJhbWUt
Pm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBl
QmxvYjsKICAgICBmcmFtZS0+YmxvYkRhdGEgPSAmYmxvYjsKLSAgICBtX291dGdvaW5nRnJhbWVR
dWV1ZS5hcHBlbmQoZnJhbWUucmVsZWFzZSgpKTsKKyAgICBtX291dGdvaW5nRnJhbWVRdWV1ZS5h
cHBlbmQoV1RGTW92ZShmcmFtZSkpOwogfQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NPdXRnb2luZ0ZyYW1lUXVldWUoKQpAQCAtNzU0LDEyICs3NTQsMTIgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgICAgICAgICBt
X2Jsb2JMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFk
ZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKICAgICAgICAgICAgICAgICBtX2Js
b2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVyU3RhcnRlZDsKICAgICAgICAgICAgICAgICBtX2Js
b2JMb2FkZXItPnN0YXJ0KG1fZG9jdW1lbnQsICpmcmFtZS0+YmxvYkRhdGEpOwotICAgICAgICAg
ICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBlbmQoZnJhbWUucmVsZWFzZSgpKTsKKyAg
ICAgICAgICAgICAgICBtX291dGdvaW5nRnJhbWVRdWV1ZS5wcmVwZW5kKFdURk1vdmUoZnJhbWUp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgQmxvYkxvYWRl
clN0YXJ0ZWQ6CiAgICAgICAgICAgICBjYXNlIEJsb2JMb2FkZXJGYWlsZWQ6Ci0gICAgICAgICAg
ICAgICAgbV9vdXRnb2luZ0ZyYW1lUXVldWUucHJlcGVuZChmcmFtZS5yZWxlYXNlKCkpOworICAg
ICAgICAgICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBlbmQoV1RGTW92ZShmcmFtZSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBCbG9iTG9hZGVy
RmluaXNoZWQ6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxv
YkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3Bw
CmluZGV4IGRkOWI0MWU4ZWRkMjgyZWM5MjFjYTFjYmMzZmEzMWQ2MmU4MzNhNTIuLjUyMmNlOTY5
MjMzNjQ3YjE5Zjc0YWVlZjA0YzA3YjIwY2FmZDAzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcApAQCAtMTE5LDggKzExOSw4IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNCbG9iKEV4ZWNTdGF0ZSogZXhlYykKIAogICAg
ICAgICBpZiAoQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gdG9BcnJheUJ1ZmZlcihpdGVtKSkK
ICAgICAgICAgICAgIGJsb2JCdWlsZGVyLmFwcGVuZChhcnJheUJ1ZmZlcik7Ci0gICAgICAgIGVs
c2UgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRvQXJyYXlC
dWZmZXJWaWV3KGl0ZW0pKQotICAgICAgICAgICAgYmxvYkJ1aWxkZXIuYXBwZW5kKGFycmF5QnVm
ZmVyVmlldy5yZWxlYXNlKCkpOworICAgICAgICBlbHNlIGlmIChhdXRvIGFycmF5QnVmZmVyVmll
dyA9IHRvQXJyYXlCdWZmZXJWaWV3KGl0ZW0pKQorICAgICAgICAgICAgYmxvYkJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgICAgIGVsc2UgaWYgKEJsb2IqIGJs
b2IgPSBKU0Jsb2I6OnRvV3JhcHBlZChpdGVtKSkKICAgICAgICAgICAgIGJsb2JCdWlsZGVyLmFw
cGVuZChibG9iKTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDA0MTMxYjEzMWEwYzlhN2VkYzZk
ZTljYjA4MDU4NWMyNzMwZTYxNWIuLjg4ZjZkNTk4MWM0NGRhYTI0ZDM4ODUzOTBiZmJhMDdmOGNm
ZTc1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgc3RhdGljIHZvaWQgc2V0TWF4aW11bUFn
ZShQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0IGRvdWJsZSYgbWF4aW11bUFnZSkKIHN0
YXRpYyBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIC8vIENyZWF0ZSBkZWZhdWx0IG9wdGlv
bnMuCi0gICAgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucyA9IFBvc2l0aW9uT3B0aW9u
czo6Y3JlYXRlKCk7CisgICAgYXV0byBvcHRpb25zID0gUG9zaXRpb25PcHRpb25zOjpjcmVhdGUo
KTsKIAogICAgIC8vIEFyZ3VtZW50IGlzIG9wdGlvbmFsIChoZW5jZSB1bmRlZmluZWQgaXMgYWxs
b3dlZCksIGFuZCBudWxsIGlzIGFsbG93ZWQuCiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKICAgICAgICAgLy8gVXNlIGRlZmF1bHQgb3B0aW9ucy4KLSAgICAgICAgcmV0dXJu
IG9wdGlvbnM7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKG9wdGlvbnMpOwogICAgIH0KIAogICAg
IC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9iamVj
dC4KQEAgLTg3LDM1ICs4NywzNSBAQCBzdGF0aWMgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gY3Jl
YXRlUG9zaXRpb25PcHRpb25zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YQogICAgIC8vIENy
ZWF0ZSB0aGUgZGljdGlvbmFyeSB3cmFwcGVyIGZyb20gdGhlIGluaXRpYWxpemVyIG9iamVjdC4K
ICAgICBKU0RpY3Rpb25hcnkgZGljdGlvbmFyeShleGVjLCBvYmplY3QpOwogCi0gICAgaWYgKCFk
aWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCJlbmFibGVIaWdoQWNjdXJhY3kiLCBvcHRpb25zLmdl
dCgpLCBzZXRFbmFibGVIaWdoQWNjdXJhY3kpKQorICAgIGlmICghZGljdGlvbmFyeS50cnlHZXRQ
cm9wZXJ0eSgiZW5hYmxlSGlnaEFjY3VyYWN5Iiwgb3B0aW9ucy5wdHIoKSwgc2V0RW5hYmxlSGln
aEFjY3VyYWN5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFkaWN0aW9uYXJ5
LnRyeUdldFByb3BlcnR5KCJ0aW1lb3V0Iiwgb3B0aW9ucy5nZXQoKSwgc2V0VGltZW91dCkpCisg
ICAgaWYgKCFkaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCJ0aW1lb3V0Iiwgb3B0aW9ucy5wdHIo
KSwgc2V0VGltZW91dCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghZGljdGlv
bmFyeS50cnlHZXRQcm9wZXJ0eSgibWF4aW11bUFnZSIsIG9wdGlvbnMuZ2V0KCksIHNldE1heGlt
dW1BZ2UpKQorICAgIGlmICghZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0eSgibWF4aW11bUFnZSIs
IG9wdGlvbnMucHRyKCksIHNldE1heGltdW1BZ2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBvcHRpb25zOworICAgIHJldHVybiBXVEZNb3ZlKG9wdGlvbnMpOwogfQog
CiBKU1ZhbHVlIEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUmIHN0
YXRlKQogewogICAgIC8vIEFyZ3VtZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBv
c2l0aW9uRXJyb3JDYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucwogCi0gICAgUmVm
UHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9u
bHlDYWxsYmFjazxKU1Bvc2l0aW9uQ2FsbGJhY2s+KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHN0
YXRlLmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVGdW5j
dGlvbk9ubHlDYWxsYmFjazxKU1Bvc2l0aW9uQ2FsbGJhY2s+KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHN0YXRlLmFyZ3VtZW50KDApKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3NpdGlvbkNhbGxiYWNr
KTsKIAotICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxs
YmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTUG9zaXRpb25FcnJvckNhbGxiYWNr
Pigmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBzdGF0ZS5hcmd1bWVudCgxKSwgQ2FsbGJhY2tBbGxv
d1VuZGVmaW5lZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsKKyAgICBhdXRvIHBvc2l0aW9uRXJyb3JD
YWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTUG9zaXRpb25FcnJvckNhbGxi
YWNrPigmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBzdGF0ZS5hcmd1bWVudCgxKSwgQ2FsbGJhY2tB
bGxvd1VuZGVmaW5lZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPFBv
c2l0aW9uT3B0aW9ucz4gcG9zaXRpb25PcHRpb25zID0gY3JlYXRlUG9zaXRpb25PcHRpb25zKCZz
dGF0ZSwgc3RhdGUuYXJndW1lbnQoMikpOworICAgIGF1dG8gcG9zaXRpb25PcHRpb25zID0gY3Jl
YXRlUG9zaXRpb25PcHRpb25zKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMikpOwogICAgIGlmIChz
dGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
QVNTRVJUKHBvc2l0aW9uT3B0aW9ucyk7CiAKLSAgICB3cmFwcGVkKCkuZ2V0Q3VycmVudFBvc2l0
aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVs
ZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsKKyAgICB3cmFwcGVkKCkuZ2V0Q3Vy
cmVudFBvc2l0aW9uKFdURk1vdmUocG9zaXRpb25DYWxsYmFjayksIFdURk1vdmUocG9zaXRpb25F
cnJvckNhbGxiYWNrKSwgV1RGTW92ZShwb3NpdGlvbk9wdGlvbnMpKTsKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIH0KIApAQCAtMTIzLDIxICsxMjMsMjEgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0
aW9uOjp3YXRjaFBvc2l0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgLy8gQXJndW1lbnRz
OiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25FcnJvckNhbGxiYWNrLCAob3B0
aW9uYWwpUG9zaXRpb25PcHRpb25zCiAKLSAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9z
aXRpb25DYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTUG9zaXRpb25DYWxs
YmFjaz4oJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgc3RhdGUuYXJndW1lbnQoMCkpOworICAgIGF1
dG8gcG9zaXRpb25DYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTUG9zaXRp
b25DYWxsYmFjaz4oJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgc3RhdGUuYXJndW1lbnQoMCkpOwog
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uQ2FsbGJhY2spOwogCi0gICAgUmVmUHRyPFBvc2l0aW9u
RXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5
Q2FsbGJhY2s8SlNQb3NpdGlvbkVycm9yQ2FsbGJhY2s+KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCks
IHN0YXRlLmFyZ3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkIHwgQ2FsbGJhY2tBbGxv
d051bGwpOworICAgIGF1dG8gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25P
bmx5Q2FsbGJhY2s8SlNQb3NpdGlvbkVycm9yQ2FsbGJhY2s+KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHN0YXRlLmFyZ3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkIHwgQ2FsbGJhY2tB
bGxvd051bGwpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAKLSAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9w
dGlvbnMgPSBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgyKSk7
CisgICAgYXV0byBwb3NpdGlvbk9wdGlvbnMgPSBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoJnN0YXRl
LCBzdGF0ZS5hcmd1bWVudCgyKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25PcHRpb25zKTsK
IAotICAgIGludCB3YXRjaElEID0gd3JhcHBlZCgpLndhdGNoUG9zaXRpb24ocG9zaXRpb25DYWxs
YmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9u
T3B0aW9ucy5yZWxlYXNlKCkpOworICAgIGludCB3YXRjaElEID0gd3JhcHBlZCgpLndhdGNoUG9z
aXRpb24oV1RGTW92ZShwb3NpdGlvbkNhbGxiYWNrKSwgV1RGTW92ZShwb3NpdGlvbkVycm9yQ2Fs
bGJhY2spLCBXVEZNb3ZlKHBvc2l0aW9uT3B0aW9ucykpOwogICAgIHJldHVybiBqc051bWJlcih3
YXRjaElEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcAppbmRleCA2YjIxMjQ0OTg3NWU3OGU4Y2JiZGQ3MmZjMjNkMGY2OWI4
Mzk2OTAxLi41YWZiY2QwMDYzN2Y1ZjE5NDhhOWI3ZGZiYjBiMWE3YWIyZjcwNmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcApA
QCAtODQsMTggKzg0LDE2IEBAIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFj
ZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4KLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBw
b3J0ID0gSlNNZXNzYWdlUG9ydDo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICAgICAgaWYgKHBvcnQp
IHsKKyAgICAgICAgaWYgKFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IEpTTWVzc2FnZVBvcnQ6
OnRvV3JhcHBlZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGUg
cG9ydHMuCiAgICAgICAgICAgICBpZiAocG9ydEFycmF5LmNvbnRhaW5zKHBvcnQpKSB7CiAgICAg
ICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcnRB
cnJheS5hcHBlbmQocG9ydC5yZWxlYXNlKCkpOworICAgICAgICAgICAgcG9ydEFycmF5LmFwcGVu
ZChXVEZNb3ZlKHBvcnQpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSB0b0FycmF5QnVmZmVyKHZhbHVlKTsKLSAgICAgICAg
ICAgIGlmIChhcnJheUJ1ZmZlcikKLSAgICAgICAgICAgICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5k
KGFycmF5QnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyID0gdG9BcnJheUJ1ZmZlcih2YWx1ZSkpCisgICAgICAgICAgICAgICAgYXJyYXlCdWZm
ZXJzLmFwcGVuZChXVEZNb3ZlKGFycmF5QnVmZmVyKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNh
Y3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2Fj
dGlvbkN1c3RvbS5jcHAKaW5kZXggNzQyMTI1NmIwNDZhOGQ3MjY4ZTIzNjdkYzJlMTNjZmFhYzIy
NDMxMi4uOGU5ZDU3ZWM1M2RhYTFkODQwNGQzMDg1ZmZhMTc5NzE4NmU2MGZhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5j
cHAKQEAgLTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVT
cWwoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICB3cmFwcGVkKCkuZXhlY3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJh
Y2sucmVsZWFzZSgpLCBlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIHdyYXBwZWQo
KS5leGVjdXRlU1FMKHNxbFN0YXRlbWVudCwgc3FsVmFsdWVzLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
V1RGTW92ZShlcnJvckNhbGxiYWNrKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZjIzNDQwMDkwMTIzNDhj
ODI4ZWViZjdjMTUzMTg1NmRlMzI4YTM4NS4uNWZjNzJkZjA1YzdiNjgxN2YyYjllYjgxMzdiMjQy
OTIzZmMwMjRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyTWFjLm1tCkBAIC03NSw3ICs3NSw3IEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJ
bnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQo
CiAgICAgICAgIGlkIG9iamVjdEZvcldlYlNjcmlwdCA9IFt3aWRnZXRWaWV3IG9iamVjdEZvcldl
YlNjcmlwdF07CiAgICAgICAgIGlmICghb2JqZWN0Rm9yV2ViU2NyaXB0KQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBKU0M6OkJpbmRpbmdzOjpPYmpjSW5zdGFu
Y2U6OmNyZWF0ZShvYmplY3RGb3JXZWJTY3JpcHQsIHJvb3RPYmplY3QucmVsZWFzZSgpKTsKKyAg
ICAgICAgcmV0dXJuIEpTQzo6QmluZGluZ3M6Ok9iamNJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdEZv
cldlYlNjcmlwdCwgV1RGTW92ZShyb290T2JqZWN0KSk7CiAgICAgfQogCiAgICAgaWYgKFt3aWRn
ZXRWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY3JlYXRlUGx1Z2luU2NyaXB0YWJs
ZU9iamVjdCldKSB7CkBAIC04NSw3ICs4NSw3IEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0
YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoCiAg
ICAgICAgIE5QT2JqZWN0KiBucE9iamVjdCA9IFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpblNjcmlw
dGFibGVPYmplY3RdOwogICAgICAgICBpZiAoIW5wT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRp
bmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShucE9iamVjdCwgcm9vdE9iamVjdC5yZWxlYXNlKCkpOwor
ICAgICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3Rh
bmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOwogICAgICAgICAvLyAt
Y3JlYXRlUGx1Z2luU2NyaXB0YWJsZU9iamVjdCByZXR1cm5zIGEgcmV0YWluZWQgTlBPYmplY3Qu
ICBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIHJlbGVhc2UgaXQuCiAgICAgICAgIF9OUE5fUmVs
ZWFzZU9iamVjdChucE9iamVjdCk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
NTVjZDQ5ODhjNDRmNTA0NzM1NDU4OGZmNjc5MGViYmFiNTMzNDdiZi4uODk5ZTgwNTM1ZGM0MjY2
OWRmMmRhYTViZjczNmIzNDhiNWE0M2QzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM1MzIsNyArMzUzMiw3IEBAIHN1
YiBHZW5lcmF0ZUNhbGxXaXRoCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhJbnNwZWN0b3I6
OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhzdGF0ZSwgIiAuIEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJz
fSAuICIpKTtcbiIpOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyI8aW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5oPiJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siPGluc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5Lmg+In0gPSAxOwotICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3Ms
ICJzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpIik7CisgICAgICAgIHB1c2goQGNhbGxXaXRoQXJn
cywgIldURk1vdmUoc2NyaXB0QXJndW1lbnRzKSIpOwogICAgIH0KICAgICBwdXNoKEBjYWxsV2l0
aEFyZ3MsICJhY3RpdmVET01XaW5kb3coc3RhdGUpIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVu
ZGVkQXR0cmlidXRlQ29udGFpbnMoJGNhbGxXaXRoLCAiQWN0aXZlV2luZG93Iik7CiAgICAgcHVz
aChAY2FsbFdpdGhBcmdzLCAiZmlyc3RET01XaW5kb3coc3RhdGUpIikgaWYgJGNvZGVHZW5lcmF0
b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGNhbGxXaXRoLCAiRmlyc3RXaW5kb3ciKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAppbmRleCAy
MzM0YzEzODMzNDQ3MzdmMGQyZmVhNWIwNjc2MTNhZjg2MjlmMjgyLi4xNDBjOWIzMTg4ZjliOGE0
YWY2NDlkZjQ4NzRmN2QwOTA5ZDBhMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9LZXlSU0FNYWMuY3BwCkBAIC0yNjIsOSArMjYyLDkgQEAgdm9pZCBDcnlwdG9LZXlS
U0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5
cHRvQWxnb3IKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBjYWxsT25X
ZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIFJlZlB0
cjxDcnlwdG9LZXlSU0E+IHB1YmxpY0tleSA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRo
bSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBjY1B1YmxpY0tleSwgdHJ1
ZSwgdXNhZ2UpOwotICAgICAgICAgICAgUmVmUHRyPENyeXB0b0tleVJTQT4gcHJpdmF0ZUtleSA9
IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRvS2V5
VHlwZTo6UHJpdmF0ZSwgY2NQcml2YXRlS2V5LCBleHRyYWN0YWJsZSwgdXNhZ2UpOwotICAgICAg
ICAgICAgKCpsb2NhbENhbGxiYWNrKShDcnlwdG9LZXlQYWlyOjpjcmVhdGUocHVibGljS2V5LnJl
bGVhc2UoKSwgcHJpdmF0ZUtleS5yZWxlYXNlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gcHVibGlj
S2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlw
dG9LZXlUeXBlOjpQdWJsaWMsIGNjUHVibGljS2V5LCB0cnVlLCB1c2FnZSk7CisgICAgICAgICAg
ICBhdXRvIHByaXZhdGVLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gs
IGhhc0hhc2gsIENyeXB0b0tleVR5cGU6OlByaXZhdGUsIGNjUHJpdmF0ZUtleSwgZXh0cmFjdGFi
bGUsIHVzYWdlKTsKKyAgICAgICAgICAgICgqbG9jYWxDYWxsYmFjaykoQ3J5cHRvS2V5UGFpcjo6
Y3JlYXRlKFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSkpOwogICAgICAg
ICAgICAgZGVsZXRlIGxvY2FsQ2FsbGJhY2s7CiAgICAgICAgICAgICBkZWxldGUgbG9jYWxGYWls
dXJlQ2FsbGJhY2s7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5j
cHAKaW5kZXggMGYzODcyM2EzNzU3MjAzOWU5MTczYmE2NDJhYjdiNThkNjY3MzcwYy4uYjEzNGM0
NTQ2NTFkMzIwMDEwN2E1YWE4ZmRkNzBkNzM1Yjk2ZGJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QmFzaWNTaGFwZXMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQoUGFzc1JlZlB0cjxDU1NQcmlt
CiAgICAgICAgIHNpZGUgPSBkZWZhdWx0U2lkZTsKICAgICB9CiAKLSAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c2lkZSksIGFtb3VudC5yZWxlYXNlKCkpKTsKKyAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKFBhaXI6OmNyZWF0ZShjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2lkZSksIFdURk1v
dmUoYW1vdW50KSkpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkQ2lyY2xlU3RyaW5nKGNvbnN0
IFN0cmluZyYgcmFkaXVzLCBjb25zdCBTdHJpbmcmIGNlbnRlclgsIGNvbnN0IFN0cmluZyYgY2Vu
dGVyWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggZTYxODgyYTUyOTQ1NmQ3MGEwNTUyMTBjOTBjMDUzZjE0YWY3ODlmYi4u
NzFkNzEwNjhkYjUzM2FkODUzYjI5MDUwYzAwMzNlZTE2ZjM1YzE5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTYwOSw3
ICs2MDksNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUmVw
ZWF0KGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKICAgICAgICAgdmVydGljYWxSZXBlYXQg
PSBob3Jpem9udGFsUmVwZWF0OwogICAgIGVsc2UKICAgICAgICAgdmVydGljYWxSZXBlYXQgPSBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVsZShpbWFn
ZS52ZXJ0aWNhbFJ1bGUoKSkpOwotICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
UGFpcjo6Y3JlYXRlKGhvcml6b250YWxSZXBlYXQucmVsZWFzZSgpLCB2ZXJ0aWNhbFJlcGVhdC5y
ZWxlYXNlKCkpKTsKKyAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNy
ZWF0ZShXVEZNb3ZlKGhvcml6b250YWxSZXBlYXQpLCBXVEZNb3ZlKHZlcnRpY2FsUmVwZWF0KSkp
OwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlKGNvbnN0
IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKQEAgLTE3OTEsMTMgKzE3OTEsMTMgQEAgc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
LCBDU1NQcm9wZXJ0eUkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBjc3NW
YWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwotICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAg
YXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGZv
ciAoQ291bnRlckRpcmVjdGl2ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7
IGl0ICE9IG1hcC0+ZW5kKCk7ICsraXQpIHsKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShpdC0+a2V5LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykp
OwogICAgICAgICBzaG9ydCBudW1iZXIgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q291bnRl
ckluY3JlbWVudCA/IGl0LT52YWx1ZS5pbmNyZW1lbnRWYWx1ZSgpIDogaXQtPnZhbHVlLnJlc2V0
VmFsdWUoKTsKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSgo
ZG91YmxlKW51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAgICB9Ci0g
ICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQog
CiBzdGF0aWMgdm9pZCBsb2dVbmltcGxlbWVudGVkUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQpCkBAIC0zMzk2LDkgKzMzOTYsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAog
ICAgICAgICAgICAgLy8gTm90IGEgcmVhbCBzdHlsZSBwcm9wZXJ0eSAtLSB1c2VkIGJ5IHRoZSBl
ZGl0aW5nIGVuZ2luZSAtLSBzbyBoYXMgbm8gY29tcHV0ZWQgdmFsdWUuCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEluaXRpYWxMZXR0ZXI6IHsKLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZHJvcCA9ICFzdHlsZS0+aW5pdGlh
bExldHRlckRyb3AoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVy
RHJvcCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpemUgPSAhc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQo
KSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDog
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKGRyb3AucmVsZWFzZSgpLCBzaXplLnJlbGVh
c2UoKSkpOworICAgICAgICAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBkcm9wID0gIXN0eWxl
LT5pbml0aWFsTGV0dGVyRHJvcCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vcm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmluaXRp
YWxMZXR0ZXJEcm9wKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAg
ICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gc2l6ZSA9ICFzdHlsZS0+aW5pdGlhbExldHRlckhl
aWdodCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1h
bCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoV1RGTW92ZShkcm9wKSwgV1RGTW92
ZShzaXplKSkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Cb3R0b21Db2xsYXBzZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFm
dGVyQ29sbGFwc2U6CkBAIC0zNjE4LDcgKzM2MTgsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LAogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsg
Y3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+YmxlbmRN
b2RlKCkpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAg
ICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmQ6CiAgICAgICAgICAgICByZXR1cm4gZ2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29udGVudERpc3RyaWJ1dGlvblZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUu
Y3BwCmluZGV4IDdiMmQxNGEyNThiNDU4ZjRlYTI4MjQ3ZDlhMDQ0YzI2MTE1YTMyNmQuLjAzNDll
ZGU4MGE4ZTYxZTkxOWVmYTRjMTVjZjlkYTgwYTE1Y2U1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUuY3BwCkBAIC00NSwxNCArNDUs
MTQgQEAgQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlOjp+Q1NTQ29udGVudERpc3RyaWJ1dGlv
blZhbHVlKCkKIAogU3RyaW5nIENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZTo6Y3VzdG9tQ1NT
VGV4dCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKG1fZGlzdHJpYnV0aW9uICE9IENT
U1ZhbHVlSW52YWxpZCkKICAgICAgICAgbGlzdC0+YXBwZW5kKGRpc3RyaWJ1dGlvbigpKTsKICAg
ICBpZiAobV9wb3NpdGlvbiAhPSBDU1NWYWx1ZUludmFsaWQpCiAgICAgICAgIGxpc3QtPmFwcGVu
ZChwb3NpdGlvbigpKTsKICAgICBpZiAobV9vdmVyZmxvdyAhPSBDU1NWYWx1ZUludmFsaWQpCiAg
ICAgICAgIGxpc3QtPmFwcGVuZChvdmVyZmxvdygpKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCktPmN1c3RvbUNTU1RleHQoKTsKKyAgICByZXR1cm4gbGlzdC0+Y3VzdG9tQ1NTVGV4dCgpOwog
fQogCiBib29sIENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0Nv
bnRlbnREaXN0cmlidXRpb25WYWx1ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggYWRkZjRiYWZmZTIzYWY4M2JjNTk3MWRhOTY0
MDYxNTQ2MTM3MmIwOC4uYThhZDMwYTVjOTY3ZGIwNjg4ZTBlMjkxYTkzNTk2YjJiZjRkY2Y0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcApAQCAtMTM2LDkg
KzEzNiw3IEBAIFJlZlB0cjxJbWFnZT4gQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6CiAgICAgICAgIHJldHVybiBJbWFnZTo6
bnVsbEltYWdlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPmFwcGx5KCk7CiAKLSAgICBtX2dlbmVy
YXRlZEltYWdlID0gZmlsdGVyUmVuZGVyZXItPm91dHB1dCgpLT5jb3B5SW1hZ2UoKTsKLQotICAg
IHJldHVybiBtX2dlbmVyYXRlZEltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZmlsdGVyUmVu
ZGVyZXItPm91dHB1dCgpLT5jb3B5SW1hZ2UoKTsKIH0KIAogdm9pZCBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjpmaWx0ZXJJbWFnZUNoYW5nZWQoY29uc3QgSW50UmVjdCYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuaAppbmRleCA1ZmM3NWFiYzA0ZDExZjEzOWNmMmJiNjdmOTlk
MjFmYmZhZTg2OTczLi5lYmQ1ZDlmNTI5ZWE3ZTFmMzRkOGEyNjhiZDI3MjQyOGNjODQ4YjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTExMiw3ICsxMTIs
NiBAQCBwcml2YXRlOgogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJPcGVyYXRpb25zOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7Ci0g
ICAgUmVmUHRyPEltYWdlPiBtX2dlbmVyYXRlZEltYWdlOwogCiAgICAgRmlsdGVyU3ViaW1hZ2VP
YnNlcnZlclByb3h5IG1fZmlsdGVyU3ViaW1hZ2VPYnNlcnZlcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueS5pbgppbmRleCA3NDUwZmZjN2YzNmRjMTcyM2QzNjIzNzU1ZmIzNmRiOWNkMjc4
YzIwLi5hZGI5NWE0NTRjZjg4MzQwNzk5ODlmZmFkMWQzMTMzOWQ1MDIyMWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTQ4OSw3ICs0ODksNyBAQCBibG9ja19ydWxlX2xpc3Q6
CiAgICAgICBpZiAoUmVmUHRyPFN0eWxlUnVsZUJhc2U+IHJ1bGUgPSBhZG9wdFJlZigkMikpIHsK
ICAgICAgICAgICBpZiAoISQkKQogICAgICAgICAgICAgICAkJCA9IG5ldyBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZUJhc2U+PjsKLSAgICAgICAgICAkJC0+YXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsK
KyAgICAgICAgICAkJC0+YXBwZW5kKFdURk1vdmUocnVsZSkpOwogICAgICAgfQogICB9CiAgIDsK
QEAgLTUwMSw3ICs1MDEsNyBAQCBibG9ja192YWxpZF9ydWxlX2xpc3Q6CiAgICAgICBpZiAoUmVm
UHRyPFN0eWxlUnVsZUJhc2U+IHJ1bGUgPSBhZG9wdFJlZigkMikpIHsKICAgICAgICAgICBpZiAo
ISQkKQogICAgICAgICAgICAgICAkJCA9IG5ldyBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PjsKLSAgICAgICAgICAkJC0+YXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKKyAgICAgICAgICAkJC0+
YXBwZW5kKFdURk1vdmUocnVsZSkpOwogICAgICAgfQogICB9CiAgIDsKQEAgLTgxNyw3ICs4MTcs
NyBAQCBrZXlmcmFtZXNfcnVsZToKICAgICB8IGtleWZyYW1lc19ydWxlIGtleWZyYW1lX3J1bGUg
bWF5YmVfc3BhY2UgewogICAgICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoUmVmUHRyPFN0eWxl
S2V5ZnJhbWU+IGtleWZyYW1lID0gYWRvcHRSZWYoJDIpKQotICAgICAgICAgICAgJCQtPmFwcGVu
ZChrZXlmcmFtZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgJCQtPmFwcGVuZChXVEZNb3ZlKGtl
eWZyYW1lKSk7CiAgICAgfQogICAgIDsKIApAQCAtMTAwMSw3ICsxMDAxLDcgQEAgYmVmb3JlX3Zp
ZXdwb3J0X3J1bGU6CiB2aWV3cG9ydDoKICAgICBiZWZvcmVfdmlld3BvcnRfcnVsZSBXRUJLSVRf
VklFV1BPUlRfUlVMRV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCiAgICAgJ3sn
IGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFy
YXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVZp
ZXdwb3J0UnVsZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgJCQgPSAmcGFyc2VyLT5jcmVhdGVWaWV3
cG9ydFJ1bGUoKS5sZWFrUmVmKCk7CiAgICAgICAgIHBhcnNlci0+bWFya1ZpZXdwb3J0UnVsZUJv
ZHlFbmQoKTsKICAgICB9CiAgICAgfCBiZWZvcmVfdmlld3BvcnRfcnVsZSBXRUJLSVRfVklFV1BP
UlRfUlVMRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NO
YW1lZEltYWdlVmFsdWUuY3BwCmluZGV4IGViNTdiNTMxZDk5MTk1OTVjMjQ0MjIyNjZjYTBiZWU2
MDcyOTlhMjIuLjg3MDAxMmQwZGE0ZDQ2YWE5YjBhN2IxM2FmYjQ2M2VhZTdmNzJhMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lZEltYWdlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lZEltYWdlVmFsdWUuY3BwCkBAIC00MSw5ICs0MSw3IEBA
IFJlZlB0cjxJbWFnZT4gQ1NTTmFtZWRJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50Kiwg
Y29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBtX2dlbmVyYXRlZEltYWdlID0gTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlOjpjcmVhdGUobV9uYW1lLCBzaXplKTsKLQotICAgIHJldHVybiBtX2dlbmVyYXRl
ZEltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpj
cmVhdGUobV9uYW1lLCBzaXplKTsKIH0KIAogYm9vbCBDU1NOYW1lZEltYWdlVmFsdWU6OmVxdWFs
cyhjb25zdCBDU1NOYW1lZEltYWdlVmFsdWUmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVkSW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU05hbWVkSW1hZ2VWYWx1ZS5oCmluZGV4IGY2YTMyNzA1MmI4NmExNjdjMGI2NDEwOWIwYTI4
M2EwNTI2YjIxYTguLjVlNjJhM2YwNDFlM2QyZWU5ZGQzZDM5OWE3NmU4YWQ2MzU5YmZiMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lZEltYWdlVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmgKQEAgLTU4LDcgKzU4LDYgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFJlZlB0cjxJbWFnZT4g
bV9nZW5lcmF0ZWRJbWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKaW5kZXggMzI3NmQzZGRmNmE1N2FlMzE0Mjk4MTAxNjUzM2EwNmNhOWNk
NjUwMy4uMWJjMWJkZjg1NTdmNmQ1ZTUyMzQyNmRhMzE1Zjg1ZDNhZjQyZDBkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKQEAgLTUwMTAsMTIgKzUwMTAsMTIgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlRmlsbFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQcm9wZXJ0eUlEJiBw
cm9wSWQxLAogICAgICAgICAgICAgaWYgKHZhbHVlcykKICAgICAgICAgICAgICAgICB2YWx1ZXMt
PmFwcGVuZChjdXJyVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgdmFsdWUgPSBjdXJyVmFsdWUucmVsZWFzZSgpOworICAgICAgICAgICAg
ICAgIHZhbHVlID0gV1RGTW92ZShjdXJyVmFsdWUpOwogICAgICAgICAgICAgaWYgKGN1cnJWYWx1
ZTIpIHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWVzMikKICAgICAgICAgICAgICAgICAgICAg
dmFsdWVzMi0+YXBwZW5kKGN1cnJWYWx1ZTIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB2YWx1ZTIgPSBjdXJyVmFsdWUyLnJlbGVh
c2UoKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUyID0gV1RGTW92ZShjdXJyVmFsdWUyKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC01MDI2LDE0ICs1MDI2LDE0IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZUZpbGxQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgQ1NTUHJv
cGVydHlJRCYgcHJvcElkMSwKICAgICB9CiAKICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy0+bGVu
Z3RoKCkpIHsKLSAgICAgICAgcmV0VmFsdWUxID0gdmFsdWVzLnJlbGVhc2UoKTsKKyAgICAgICAg
cmV0VmFsdWUxID0gV1RGTW92ZSh2YWx1ZXMpOwogICAgICAgICBpZiAodmFsdWVzMiAmJiB2YWx1
ZXMyLT5sZW5ndGgoKSkKLSAgICAgICAgICAgIHJldFZhbHVlMiA9IHZhbHVlczIucmVsZWFzZSgp
OworICAgICAgICAgICAgcmV0VmFsdWUyID0gV1RGTW92ZSh2YWx1ZXMyKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIGlmICh2YWx1ZSkgewotICAgICAgICByZXRWYWx1ZTEgPSB2
YWx1ZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldFZhbHVlMiA9IHZhbHVlMi5yZWxlYXNlKCk7Cisg
ICAgICAgIHJldFZhbHVlMSA9IFdURk1vdmUodmFsdWUpOworICAgICAgICByZXRWYWx1ZTIgPSBX
VEZNb3ZlKHZhbHVlMik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4g
ZmFsc2U7CkBAIC01NDA3LDcgKzU0MDcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRp
b25Qcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYgcgogICAg
ICAgICAgICAgaWYgKHZhbHVlcykKICAgICAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChjdXJy
VmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdmFsdWUgPSBjdXJyVmFsdWUucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHZhbHVlID0g
V1RGTW92ZShjdXJyVmFsdWUpOwogCiAgICAgICAgICAgICBhbGxvd0NvbW1hID0gdHJ1ZTsKICAg
ICAgICAgfQpAQCAtNTQxOSwxMSArNTQxOSwxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmlt
YXRpb25Qcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYgcgog
ICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5sZW5ndGgoKSkgewotICAgICAgICBy
ZXN1bHQgPSB2YWx1ZXMucmVsZWFzZSgpOworICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKHZhbHVl
cyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAodmFsdWUpIHsKLSAgICAg
ICAgcmVzdWx0ID0gdmFsdWUucmVsZWFzZSgpOworICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKHZh
bHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAg
LTY1NTcsNyArNjU1Nyw3IEBAIFJlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNl
SW5zZXRSb3VuZGVkQ29ybmVycyhQYXNzUmVmUHRyPENTU0Jhc2ljU2hhCiAgICAgICAgIGlmICgh
aW5kZXhBZnRlclNsYXNoKQogICAgICAgICAgICAgcmFkaWlbMF1baV0gPSByYWRpdXM7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHJhZGlpWzFdW2kgLSBpbmRleEFmdGVyU2xhc2hdID0gcmFk
aXVzLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJhZGlpWzFdW2kgLSBpbmRleEFmdGVyU2xhc2hd
ID0gV1RGTW92ZShyYWRpdXMpOwogICAgIH0KIAogICAgIGlmICghaW5kZXhBZnRlclNsYXNoKSB7
CkBAIC02NTY3LDEwICs2NTY3LDEwIEBAIFJlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6
OnBhcnNlSW5zZXRSb3VuZGVkQ29ybmVycyhQYXNzUmVmUHRyPENTU0Jhc2ljU2hhCiAgICAgfSBl
bHNlCiAgICAgICAgIGNvbXBsZXRlQm9yZGVyUmFkaWkocmFkaWlbMV0pOwogCi0gICAgc2hhcGUt
PnNldFRvcExlZnRSYWRpdXMoY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHJhZGlpWzBdWzBdLnJl
bGVhc2UoKSwgcmFkaWlbMV1bMF0ucmVsZWFzZSgpKSk7Ci0gICAgc2hhcGUtPnNldFRvcFJpZ2h0
UmFkaXVzKGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihyYWRpaVswXVsxXS5yZWxlYXNlKCksIHJh
ZGlpWzFdWzFdLnJlbGVhc2UoKSkpOwotICAgIHNoYXBlLT5zZXRCb3R0b21SaWdodFJhZGl1cyhj
cmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocmFkaWlbMF1bMl0ucmVsZWFzZSgpLCByYWRpaVsxXVsy
XS5yZWxlYXNlKCkpKTsKLSAgICBzaGFwZS0+c2V0Qm90dG9tTGVmdFJhZGl1cyhjcmVhdGVQcmlt
aXRpdmVWYWx1ZVBhaXIocmFkaWlbMF1bM10ucmVsZWFzZSgpLCByYWRpaVsxXVszXS5yZWxlYXNl
KCkpKTsKKyAgICBzaGFwZS0+c2V0VG9wTGVmdFJhZGl1cyhjcmVhdGVQcmltaXRpdmVWYWx1ZVBh
aXIoV1RGTW92ZShyYWRpaVswXVswXSksIFdURk1vdmUocmFkaWlbMV1bMF0pKSk7CisgICAgc2hh
cGUtPnNldFRvcFJpZ2h0UmFkaXVzKGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEZNb3ZlKHJh
ZGlpWzBdWzFdKSwgV1RGTW92ZShyYWRpaVsxXVsxXSkpKTsKKyAgICBzaGFwZS0+c2V0Qm90dG9t
UmlnaHRSYWRpdXMoY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKFdURk1vdmUocmFkaWlbMF1bMl0p
LCBXVEZNb3ZlKHJhZGlpWzFdWzJdKSkpOworICAgIHNoYXBlLT5zZXRCb3R0b21MZWZ0UmFkaXVz
KGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEZNb3ZlKHJhZGlpWzBdWzNdKSwgV1RGTW92ZShy
YWRpaVsxXVszXSkpKTsKIAogICAgIHJldHVybiBzaGFwZTsKIH0KQEAgLTc5MzIsMjggKzc5MzIs
MjggQEAgc3RydWN0IFNoYWRvd1BhcnNlQ29udGV4dCB7CiAKICAgICB2b2lkIGNvbW1pdExlbmd0
aChDU1NQYXJzZXI6OlZhbHVlV2l0aENhbGN1bGF0aW9uJiB2YWx1ZVdpdGhDYWxjdWxhdGlvbikK
ICAgICB7Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWUg
PSBtX3BhcnNlci5jcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUodmFsdWVXaXRoQ2FsY3VsYXRp
b24pOworICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbHVlID0gbV9wYXJzZXIuY3JlYXRlUHJpbWl0
aXZlTnVtZXJpY1ZhbHVlKHZhbHVlV2l0aENhbGN1bGF0aW9uKTsKIAogICAgICAgICBpZiAoYWxs
b3dYKSB7Ci0gICAgICAgICAgICB4ID0gcHJpbWl0aXZlVmFsdWUucmVsZWFzZSgpOworICAgICAg
ICAgICAgeCA9IFdURk1vdmUocHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYWxsb3dYID0g
ZmFsc2U7CiAgICAgICAgICAgICBhbGxvd1kgPSB0cnVlOwogICAgICAgICAgICAgYWxsb3dDb2xv
ciA9IGZhbHNlOwogICAgICAgICAgICAgYWxsb3dTdHlsZSA9IGZhbHNlOwogICAgICAgICAgICAg
YWxsb3dCcmVhayA9IGZhbHNlOwogICAgICAgICB9IGVsc2UgaWYgKGFsbG93WSkgewotICAgICAg
ICAgICAgeSA9IHByaW1pdGl2ZVZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHkgPSBXVEZN
b3ZlKHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgIGFsbG93WSA9IGZhbHNlOwogICAgICAg
ICAgICAgYWxsb3dCbHVyID0gdHJ1ZTsKICAgICAgICAgICAgIGFsbG93Q29sb3IgPSB0cnVlOwog
ICAgICAgICAgICAgYWxsb3dTdHlsZSA9IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94
U2hhZG93IHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5Qm94U2hhZG93OwogICAgICAgICAgICAg
YWxsb3dCcmVhayA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoYWxsb3dCbHVyKSB7Ci0gICAg
ICAgICAgICBibHVyID0gcHJpbWl0aXZlVmFsdWUucmVsZWFzZSgpOworICAgICAgICAgICAgYmx1
ciA9IFdURk1vdmUocHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYWxsb3dCbHVyID0gZmFs
c2U7CiAgICAgICAgICAgICBhbGxvd1NwcmVhZCA9IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Vi
a2l0Qm94U2hhZG93IHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5Qm94U2hhZG93OwogICAgICAg
ICB9IGVsc2UgaWYgKGFsbG93U3ByZWFkKSB7Ci0gICAgICAgICAgICBzcHJlYWQgPSBwcmltaXRp
dmVWYWx1ZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBzcHJlYWQgPSBXVEZNb3ZlKHByaW1pdGl2
ZVZhbHVlKTsKICAgICAgICAgICAgIGFsbG93U3ByZWFkID0gZmFsc2U7CiAgICAgICAgIH0KICAg
ICB9CkBAIC04MDY4LDcgKzgwNjgsNyBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6
OnBhcnNlU2hhZG93KENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCBDU1NQcgogICAgIGlm
IChjb250ZXh0LmFsbG93QnJlYWspIHsKICAgICAgICAgY29udGV4dC5jb21taXRWYWx1ZSgpOwog
ICAgICAgICBpZiAoY29udGV4dC52YWx1ZXMgJiYgY29udGV4dC52YWx1ZXMtPmxlbmd0aCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQudmFsdWVzLnJlbGVhc2UoKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGNvbnRleHQudmFsdWVzKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTg0MTIsMTYgKzg0MTIsMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21taXRO
dW1iZXIoQ1NTUGFyc2VyOjpWYWx1ZVdpdGhDYWxjdWxhdGlvbiYgdmFsdWVXaXRoQ2FsY3VsYXRp
b24pCiAgICAgewotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHByaW1pdGl2ZVZh
bHVlID0gbV9wYXJzZXIuY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKHZhbHVlV2l0aENhbGN1
bGF0aW9uKTsKKyAgICAgICAgYXV0byBwcmltaXRpdmVWYWx1ZSA9IG1fcGFyc2VyLmNyZWF0ZVBy
aW1pdGl2ZU51bWVyaWNWYWx1ZSh2YWx1ZVdpdGhDYWxjdWxhdGlvbik7CiAgICAgICAgIGlmICgh
bV90b3ApCi0gICAgICAgICAgICBtX3RvcCA9IHByaW1pdGl2ZVZhbHVlLnJlbGVhc2UoKTsKKyAg
ICAgICAgICAgIG1fdG9wID0gV1RGTW92ZShwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIGVsc2Ug
aWYgKCFtX3JpZ2h0KQotICAgICAgICAgICAgbV9yaWdodCA9IHByaW1pdGl2ZVZhbHVlLnJlbGVh
c2UoKTsKKyAgICAgICAgICAgIG1fcmlnaHQgPSBXVEZNb3ZlKHByaW1pdGl2ZVZhbHVlKTsKICAg
ICAgICAgZWxzZSBpZiAoIW1fYm90dG9tKQotICAgICAgICAgICAgbV9ib3R0b20gPSBwcmltaXRp
dmVWYWx1ZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBtX2JvdHRvbSA9IFdURk1vdmUocHJpbWl0
aXZlVmFsdWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9sZWZ0KTsK
LSAgICAgICAgICAgIG1fbGVmdCA9IHByaW1pdGl2ZVZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAg
ICAgIG1fbGVmdCA9IFdURk1vdmUocHJpbWl0aXZlVmFsdWUpOwogICAgICAgICB9CiAKICAgICAg
ICAgbV9hbGxvd051bWJlciA9ICFtX2xlZnQ7CkBAIC04NTMxLDE0ICs4NTMxLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gbV9wYXJzZXIuY3JlYXRlUHJpbWl0aXZl
TnVtZXJpY1ZhbHVlKHZhbHVlV2l0aENhbGN1bGF0aW9uKTsKIAogICAgICAgICBpZiAoIW1fdG9w
KQotICAgICAgICAgICAgbV90b3AgPSBwcmltaXRpdmVWYWx1ZS5yZWxlYXNlKCk7CisgICAgICAg
ICAgICBtX3RvcCA9IFdURk1vdmUocHJpbWl0aXZlVmFsdWUpOwogICAgICAgICBlbHNlIGlmICgh
bV9yaWdodCkKLSAgICAgICAgICAgIG1fcmlnaHQgPSBwcmltaXRpdmVWYWx1ZS5yZWxlYXNlKCk7
CisgICAgICAgICAgICBtX3JpZ2h0ID0gV1RGTW92ZShwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAg
IGVsc2UgaWYgKCFtX2JvdHRvbSkKLSAgICAgICAgICAgIG1fYm90dG9tID0gcHJpbWl0aXZlVmFs
dWUucmVsZWFzZSgpOworICAgICAgICAgICAgbV9ib3R0b20gPSBXVEZNb3ZlKHByaW1pdGl2ZVZh
bHVlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fbGVmdCk7Ci0gICAg
ICAgICAgICBtX2xlZnQgPSBwcmltaXRpdmVWYWx1ZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBt
X2xlZnQgPSBXVEZNb3ZlKHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgfQogCiAgICAgICAgIG1f
YWxsb3dOdW1iZXIgPSAhbV9sZWZ0OwpAQCAtODY1NSwxMCArODY1NSwxMCBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBpZiAoIXZhbGlkYXRlVW5pdCh2YWx1ZVdpdGhDYWxjdWxhdGlvbiwgRkxl
bmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXMgPSBjcmVhdGVQcmltaXRp
dmVOdW1lcmljVmFsdWUodmFsdWVXaXRoQ2FsY3VsYXRpb24pOworICAgICAgICBhdXRvIHJhZGl1
cyA9IGNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZSh2YWx1ZVdpdGhDYWxjdWxhdGlvbik7CiAK
ICAgICAgICAgaWYgKCFpbmRleEFmdGVyU2xhc2gpIHsKLSAgICAgICAgICAgIHJhZGlpWzBdW2ld
ID0gcmFkaXVzOworICAgICAgICAgICAgcmFkaWlbMF1baV0gPSBXVEZNb3ZlKHJhZGl1cyk7CiAK
ICAgICAgICAgICAgIC8vIExlZ2FjeSBzeW50YXg6IC13ZWJraXQtYm9yZGVyLXJhZGl1czogbDEg
bDI7IGlzIGVxdWl2YWxlbnQgdG8gYm9yZGVyLXJhZGl1czogbDEgLyBsMjsKICAgICAgICAgICAg
IGlmIChudW0gPT0gMiAmJiBwcm9wSWQgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXMp
IHsKQEAgLTg2NjYsNyArODY2Niw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1
cyhDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICAgICAg
Y29tcGxldGVCb3JkZXJSYWRpaShyYWRpaVswXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgcmFkaWlbMV1baSAtIGluZGV4QWZ0ZXJTbGFzaF0gPSByYWRpdXMu
cmVsZWFzZSgpOworICAgICAgICAgICAgcmFkaWlbMV1baSAtIGluZGV4QWZ0ZXJTbGFzaF0gPSBX
VEZNb3ZlKHJhZGl1cyk7CiAgICAgfQogCiAgICAgaWYgKCFpbmRleEFmdGVyU2xhc2gpIHsKQEAg
LTg2NzcsMTAgKzg2NzcsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVyUmFkaXVzKENT
U1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgY29tcGxldGVCb3Jk
ZXJSYWRpaShyYWRpaVsxXSk7CiAKICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUoKnRo
aXMsIFByb3BlcnR5SW1wbGljaXQpOwotICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVy
VG9wTGVmdFJhZGl1cywgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHJhZGlpWzBdWzBdLnJlbGVh
c2UoKSwgcmFkaWlbMV1bMF0ucmVsZWFzZSgpKSwgaW1wb3J0YW50KTsKLSAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBjcmVhdGVQcmltaXRpdmVWYWx1ZVBh
aXIocmFkaWlbMF1bMV0ucmVsZWFzZSgpLCByYWRpaVsxXVsxXS5yZWxlYXNlKCkpLCBpbXBvcnRh
bnQpOwotICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMs
IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihyYWRpaVswXVsyXS5yZWxlYXNlKCksIHJhZGlpWzFd
WzJdLnJlbGVhc2UoKSksIGltcG9ydGFudCk7Ci0gICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocmFkaWlbMF1b
M10ucmVsZWFzZSgpLCByYWRpaVsxXVszXS5yZWxlYXNlKCkpLCBpbXBvcnRhbnQpOworICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgY3JlYXRlUHJpbWl0aXZl
VmFsdWVQYWlyKFdURk1vdmUocmFkaWlbMF1bMF0pLCBXVEZNb3ZlKHJhZGlpWzFdWzBdKSksIGlt
cG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1
cywgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKFdURk1vdmUocmFkaWlbMF1bMV0pLCBXVEZNb3Zl
KHJhZGlpWzFdWzFdKSksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cywgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKFdURk1vdmUo
cmFkaWlbMF1bMl0pLCBXVEZNb3ZlKHJhZGlpWzFdWzJdKSksIGltcG9ydGFudCk7CisgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBjcmVhdGVQcmltaXRp
dmVWYWx1ZVBhaXIoV1RGTW92ZShyYWRpaVswXVszXSksIFdURk1vdmUocmFkaWlbMV1bM10pKSwg
aW1wb3J0YW50KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODc0Miw3ICs4NzQyLDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlQ291bnRlcihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgaW50IGRl
ZmF1bHRWYWx1ZSwgYm9vbCBpbXBvcnQKICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZUxpc3Qt
Pm5leHQoKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGNvdW50ZXJOYW1lLnJlbGVhc2UoKSwKKyAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKFdURk1vdmUo
Y291bnRlck5hbWUpLAogICAgICAgICAgICAgICAgICAgICBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKGksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSkpOwogICAg
ICAgICAgICAgICAgIHN0YXRlID0gSUQ7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC04
OTc0LDcgKzg5NzQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnQo
Q1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDUwogICAgICAgICBhcmd1bWVu
dCA9IGFyZ3MtPm5leHQoKTsKICAgICB9CiAKLSAgICBncmFkaWVudCA9IHJlc3VsdC5yZWxlYXNl
KCk7CisgICAgZ3JhZGllbnQgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTkwNzIsNyArOTA3Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlcHJlY2F0ZWRM
aW5lYXJHcmFkaWVudChDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmCiAgICAgaWYg
KCFyZXN1bHQtPnN0b3BDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBncmFk
aWVudCA9IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgZ3JhZGllbnQgPSBXVEZNb3ZlKHJlc3VsdCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkxOTIsNyArOTE5Miw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJWYWx1ZUxpc3QmIHZh
bHVlTGlzdCwgUmVmCiAgICAgaWYgKCFwYXJzZUdyYWRpZW50Q29sb3JTdG9wcygqYXJncywgKnJl
c3VsdCwgZXhwZWN0Q29tbWEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBncmFkaWVu
dCA9IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgZ3JhZGllbnQgPSBXVEZNb3ZlKHJlc3VsdCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkyNjUsNyArOTI2NSw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQ
dHI8Q1NTVmFsCiAgICAgaWYgKCFyZXN1bHQtPnN0b3BDb3VudCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBncmFkaWVudCA9IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgZ3JhZGllbnQg
PSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkzOTEsNyArOTM5
MSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclZhbHVl
TGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8Q1NTVmFsCiAgICAgaWYgKCFwYXJzZUdyYWRpZW50Q29s
b3JTdG9wcygqYXJncywgKnJlc3VsdCwgZXhwZWN0Q29tbWEpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBncmFkaWVudCA9IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgZ3JhZGllbnQgPSBX
VEZNb3ZlKHJlc3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwMDY1LDcgKzEwMDY1
LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtVmFsdWUoQ1NT
UGFyc2VyVmFsdWUmIHZhbHVlKQogICAgICAgICArK2FyZ051bWJlcjsKICAgICB9CiAKLSAgICBy
ZXR1cm4gdHJhbnNmb3JtVmFsdWUucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHRyYW5z
Zm9ybVZhbHVlKTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OmlzQmxlbmRNb2RlKENTU1ZhbHVlSUQg
dmFsdWVJRCkKQEAgLTEwMTA5LDcgKzEwMTA5LDcgQEAgc3RhdGljIHZvaWQgZmlsdGVySW5mb0Zv
ck5hbWUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBuYW1lLCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZToK
IAogUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQnVpbHRpbkZp
bHRlckFyZ3VtZW50cyhDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MsIFdlYktpdENTU0ZpbHRlclZh
bHVlOjpGaWx0ZXJPcGVyYXRpb25UeXBlIGZpbHRlclR5cGUpCiB7Ci0gICAgUmVmUHRyPFdlYktp
dENTU0ZpbHRlclZhbHVlPiBmaWx0ZXJWYWx1ZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjcmVh
dGUoZmlsdGVyVHlwZSk7CisgICAgYXV0byBmaWx0ZXJWYWx1ZSA9IFdlYktpdENTU0ZpbHRlclZh
bHVlOjpjcmVhdGUoZmlsdGVyVHlwZSk7CiAKICAgICBzd2l0Y2ggKGZpbHRlclR5cGUpIHsgICAg
CiAgICAgY2FzZSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6R3JheXNjYWxlRmlsdGVyT3BlcmF0aW9u
OgpAQCAtMTAxOTUsNyArMTAxOTUsNyBAQCBSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VCdWlsdGluRmlsdGVyQXJndW1lbnRzKENTU1BhcnNlclZhbAogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4g
ZmlsdGVyVmFsdWUucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGZpbHRlclZhbHVlKTsK
IH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsdGVyKENTU1BhcnNlclZhbHVlTGlzdCYgdmFs
dWVMaXN0LCBSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCkBAIC0xMDYwMCw3ICsxMDYwMCw3IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVRleHRJbmRlbnQoKQogewogICAgIC8v
IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJpdCAgd2hlbiBDU1MzX1RFWFQgaXMgZGlz
YWJsZWQuCiAgICAgLy8gWyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiBdICYmIFsgLXdlYmtpdC1o
YW5naW5nIHx8IC13ZWJraXQtZWFjaC1saW5lIF0/IHwgaW5oZXJpdCAgd2hlbiBDU1MzX1RFWFQg
aXMgZW5hYmxlZC4KLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBib29sIGhhc0xlbmd0aE9yUGVyY2VudGFnZSA9
IGZhbHNlOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgYm9vbCBoYXNFYWNoTGluZSA9IGZh
bHNlOwpAQCAtMTA2MzIsNyArMTA2MzIsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VUZXh0SW5kZW50KCkKICAgICBpZiAoIWhhc0xlbmd0aE9yUGVyY2VudGFnZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUhhbmdpbmdQdW5j
dHVhdGlvbihib29sIGltcG9ydGFudCkKQEAgLTEyOTY2LDcgKzEyOTY2LDcgQEAgdm9pZCBDU1NQ
YXJzZXI6OmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gcnVsZSkKICAgICAgICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay0+bGFzdCgpLT5jaGlsZFJ1
bGVzLmFwcGVuZChydWxlKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gQ1NT
UGFyc2VyOjpwb3BSdWxlRGF0YSgpCitSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IENTU1BhcnNl
cjo6cG9wUnVsZURhdGEoKQogewogICAgIGlmICghbV9ydWxlU291cmNlRGF0YVJlc3VsdCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjk3NSw3ICsxMjk3NSw3IEBAIFBhc3NSZWZQdHI8
Q1NTUnVsZVNvdXJjZURhdGE+IENTU1BhcnNlcjo6cG9wUnVsZURhdGEoKQogICAgIG1fY3VycmVu
dFJ1bGVEYXRhID0gbnVsbHB0cjsKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IGRhdGEg
PSBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5sYXN0KCk7CiAgICAgbV9jdXJyZW50UnVsZURhdGFT
dGFjay0+cmVtb3ZlTGFzdCgpOwotICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gZGF0YTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnN5bnRheEVycm9yKGNvbnN0IExvY2F0aW9u
JiBsb2NhdGlvbiwgU3ludGF4RXJyb3JUeXBlIGVycm9yKQpAQCAtMTMzMjMsMTAgKzEzMzIzLDEw
IEBAIHZvaWQgQ1NTUGFyc2VyOjptYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRh
OjpUeXBlIHJ1bGVUeXBlKQogICAgIGlmIChtX2N1cnJlbnRSdWxlRGF0YSkKICAgICAgICAgbV9j
dXJyZW50UnVsZURhdGFTdGFjay0+cmVtb3ZlTGFzdCgpOwogCi0gICAgUmVmUHRyPENTU1J1bGVT
b3VyY2VEYXRhPiBkYXRhID0gQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZShydWxlVHlwZSk7Cisg
ICAgYXV0byBkYXRhID0gQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZShydWxlVHlwZSk7CiAgICAg
ZGF0YS0+cnVsZUhlYWRlclJhbmdlLnN0YXJ0ID0gdG9rZW5TdGFydE9mZnNldCgpOwotICAgIG1f
Y3VycmVudFJ1bGVEYXRhID0gZGF0YTsKLSAgICBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5hcHBl
bmQoZGF0YS5yZWxlYXNlKCkpOworICAgIG1fY3VycmVudFJ1bGVEYXRhID0gZGF0YS5jb3B5UmVm
KCk7CisgICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay0+YXBwZW5kKFdURk1vdmUoZGF0YSkpOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTEzNDQ1LDE2ICsxMzQ0
NSwxNiBAQCB2b2lkIENTU1BhcnNlcjo6bWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRG
b3VuZCwgYm9vbCBpc1Byb3BlcnR5UGFyc2VkKQogfQogCiAjaWYgRU5BQkxFKENTU19ERVZJQ0Vf
QURBUFRBVElPTikKLVBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVW
aWV3cG9ydFJ1bGUoKQorUmVmPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlVmlld3Bv
cnRSdWxlKCkKIHsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVj
bGFyYXRpb25zID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U3R5bGVSdWxlVmlld3BvcnQ+IHJ1bGUg
PSBTdHlsZVJ1bGVWaWV3cG9ydDo6Y3JlYXRlKGNyZWF0ZVN0eWxlUHJvcGVydGllcygpKTsKKyAg
ICBhdXRvIHJ1bGUgPSBTdHlsZVJ1bGVWaWV3cG9ydDo6Y3JlYXRlKGNyZWF0ZVN0eWxlUHJvcGVy
dGllcygpKTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKIAogICAgIHByb2Nlc3NBbmRBZGROZXdS
dWxlVG9Tb3VyY2VUcmVlSWZOZWVkZWQoKTsKIAotICAgIHJldHVybiBydWxlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gcnVsZTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmlld3BvcnRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmgKaW5kZXggZGM2MTgzNjE3MmQ5ODQ0ZDZhM2NmMWE2MDJiYmJmYjQxMTU3YjBiYy4uZWZm
MmY4M2FlY2NmMmUzZTVhMGE2YzgxNTk4MjgzMDE4YTVhN2NiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuaApAQCAtNDUwLDcgKzQ1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtQcm9wZXJ0eUVu
ZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCk7CiAgICAgdm9p
ZCBwcm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBh
ZGROZXdSdWxlVG9Tb3VyY2VUcmVlKFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+KTsKLSAg
ICBQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBwb3BSdWxlRGF0YSgpOworICAgIFJlZlB0
cjxDU1NSdWxlU291cmNlRGF0YT4gcG9wUnVsZURhdGEoKTsKICAgICB2b2lkIHJlc2V0UHJvcGVy
dHlSYW5nZSgpIHsgbV9wcm9wZXJ0eVJhbmdlLnN0YXJ0ID0gbV9wcm9wZXJ0eVJhbmdlLmVuZCA9
IFVJTlRfTUFYOyB9CiAgICAgYm9vbCBpc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2N1cnJlbnRSdWxlRGF0YVN0YWNrOyB9CiAgICAgdm9pZCBzeW50YXhFcnJvcihj
b25zdCBMb2NhdGlvbiYsIFN5bnRheEVycm9yVHlwZSA9IEdlbmVyYWxTeW50YXhFcnJvcik7CkBA
IC00NjIsNyArNDYyLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJ
T04pCiAgICAgdm9pZCBtYXJrVmlld3BvcnRSdWxlQm9keVN0YXJ0KCkgeyBtX2luVmlld3BvcnQg
PSB0cnVlOyB9CiAgICAgdm9pZCBtYXJrVmlld3BvcnRSdWxlQm9keUVuZCgpIHsgbV9pblZpZXdw
b3J0ID0gZmFsc2U7IH0KLSAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZVZpZXdw
b3J0UnVsZSgpOworICAgIFJlZjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVWaWV3cG9ydFJ1bGUoKTsK
ICNlbmRpZgogCiAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVOdW1l
cmljVmFsdWUoVmFsdWVXaXRoQ2FsY3VsYXRpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
clZhbHVlcy5jcHAKaW5kZXggMGU4M2U1MzNlOTgxMTljOWZhZWM3ZjQ2NDhjYjJlZTJhYjMyZTYx
Ny4uYjhjMzc1ZGM2YjE4MDE4NzY1N2I5MDEyNDg2OTRhOWIwYjllZDBiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKQEAgLTg2LDE2ICs4NiwxNiBAQCBib29sIENTU1Bh
cnNlclZhbHVlTGlzdDo6Y29udGFpbnNWYXJpYWJsZXMoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1Zh
bHVlKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKCkK
IHsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVlOwogICAgIGlmIChpZCkKICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKTsKICAgICAK
ICAgICBpZiAodW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IpIHsKLSAgICAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwcmltaXRpdmVWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVQYXJzZXJPcGVyYXRvcihpVmFsdWUpOworICAgICAgICBhdXRvIHByaW1pdGl2ZVZh
bHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZVBhcnNlck9wZXJhdG9yKGlWYWx1ZSk7CiAg
ICAgICAgIHByaW1pdGl2ZVZhbHVlLT5zZXRQcmltaXRpdmVUeXBlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEFSU0VSX09QRVJBVE9SKTsKLSAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLnJl
bGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUocHJpbWl0aXZlVmFsdWUpOwogICAgIH0K
ICAgICBpZiAodW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pCiAgICAgICAgIHJldHVy
biBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24pOwpAQCAtMTcyLDExICsxNzIsMTEg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKCkK
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ0FMQzoKICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOgogICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9MRU5HVEg6Ci0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
Q1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxl
Y3Rvcihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIHBzZXVkb1R5cGVTdHJpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggOGFkZTJlNTk2MDRmMzBiYjBhNzBmYjQ0NWJkMzk2
MGMyN2JjM2E4Zi4uNzNhOTU0Y2NjNmYwMWQ5NTM4ZGQ1MTY0YmQ1Nzc5YTM1YTM5MDJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHN0cnVj
dCBDU1NQYXJzZXJWYWx1ZSB7CiAKICAgICB2b2lkIHNldEZyb21WYWx1ZUxpc3Qoc3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclZhbHVlTGlzdD4pOwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Y3JlYXRlQ1NTVmFsdWUoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGNyZWF0ZUNTU1ZhbHVlKCk7
CiB9OwogCiB2b2lkIGRlc3Ryb3koY29uc3QgQ1NTUGFyc2VyVmFsdWUmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggMzY2NTAxMDkxZDAzMDA5OTU0YzA3MjEwMGY0N2EwMzE2
MDg5OGI3NS4uM2RkMDQzMjU3MWYzNDE3ZmY2ZmFlMmE4NWNiMGIyZTJhZjgzYzQ4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBDU1NWYWx1
ZUxpc3Q6Omhhc1ZhbHVlKENTU1ZhbHVlKiB2YWwpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVMaXN0Ojpjb3B5KCkKK1JlZjxD
U1NWYWx1ZUxpc3Q+IENTU1ZhbHVlTGlzdDo6Y29weSgpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gbmV3TGlzdDsKICAgICBzd2l0Y2ggKG1fdmFsdWVMaXN0U2VwYXJhdG9yKSB7CkBAIC05
Niw3ICs5Niw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZUxpc3Q6OmNvcHko
KQogICAgIH0KICAgICBmb3IgKGF1dG8mIHZhbHVlIDogbV92YWx1ZXMpCiAgICAgICAgIG5ld0xp
c3QtPmFwcGVuZCh2YWx1ZS5nZXQoKSk7Ci0gICAgcmV0dXJuIG5ld0xpc3QucmVsZWFzZSgpOwor
ICAgIHJldHVybiBuZXdMaXN0LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIFN0cmluZyBDU1NWYWx1
ZUxpc3Q6OmN1c3RvbUNTU1RleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCmlu
ZGV4IGNlZTQ0YTFmZDIwNWEzN2M1ZmNjZjA3MmJmY2E4ZWMxNDcyNjk0NmUuLjllZjdiMjk5MWU2
MTA4ZThiNTM4OTE5OGQyMGQ0YTU0ZTcwMjg5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0
LmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGVuZChSZWY8Q1NTVmFs
dWU+JiYpOwogICAgIGJvb2wgcmVtb3ZlQWxsKENTU1ZhbHVlKik7CiAgICAgYm9vbCBoYXNWYWx1
ZShDU1NWYWx1ZSopIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb3B5KCk7
CisgICAgUmVmPENTU1ZhbHVlTGlzdD4gY29weSgpOwogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1Rl
eHQoKSBjb25zdDsKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NWYWx1ZUxpc3QmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggMDQ3ZjJlMGJiNjFjMWIyOWI4ZTU1N2RlZTk1OWQ4OWYyYmUxZDU0Ny4u
MjA0NWI1NDhmYTVjZDVhMDRjOTM4ZjI1N2IzZjY0YTIxNjE4YWRmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAg
LTIwNiw3ICsyMDYsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eQogICAgICAgICAgICAgcmV0
dXJuIGdseXBoT3JpZW50YXRpb25Ub0NTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLmdseXBoT3Jp
ZW50YXRpb25Ib3Jpem9udGFsKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5R2x5cGhPcmll
bnRhdGlvblZlcnRpY2FsOiB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiB2YWx1ZSA9IGdseXBoT3JpZW50YXRpb25Ub0NTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxl
LmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWUucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAgICAgICAg
ICAgaWYgKHN2Z1N0eWxlLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpID09IEdPX0FVVE8pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlQXV0byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmgKaW5kZXggMzY4NmM5YmNmNjc1MmFkY2IyZjRhMDBkMTBkYWU3NmM4YTcyMWZhOC4uNjNkZTk0
NDVkZmRhNTZkZGE4Y2M3MGM4MzA2OTZlNTk0MGE3Mzc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtODAsMTMgKzgwLDEzIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPck5vbmUoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIFRleHRFbXBoYXNpc1Bvc2l0aW9uIGNvbnZlcnRUZXh0RW1waGFz
aXNQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgRVRleHRB
bGlnbiBjb252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBjb252ZXJ0Q2xpcFBhdGgoU3R5bGVS
ZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlv
bj4gY29udmVydENsaXBQYXRoKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRp
YyBFUmVzaXplIGNvbnZlcnRSZXNpemUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAg
c3RhdGljIGludCBjb252ZXJ0TWFycXVlZVJlcGV0aXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVNwZWVkKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFF1b3Rlc0RhdGE+IGNvbnZlcnRR
dW90ZXMoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFRleHRVbmRlcmxp
bmVQb3NpdGlvbiBjb252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gY29udmVy
dFJlZmxlY3Rpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZlB0
cjxTdHlsZVJlZmxlY3Rpb24+IGNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NW
YWx1ZSYpOwogICAgIHN0YXRpYyBJbnRTaXplIGNvbnZlcnRJbml0aWFsTGV0dGVyKFN0eWxlUmVz
b2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0VGV4dFN0cm9rZVdp
ZHRoKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBMaW5lQm94Q29udGFp
biBjb252ZXJ0TGluZUJveENvbnRhaW4oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CkBAIC00
ODIsNyArNDgyLDcgQEAgaW5saW5lIEVUZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICByZXR1cm4gcGFyZW50
U3R5bGUtPnRleHRBbGlnbigpOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxDbGlwUGF0aE9wZXJh
dGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZlB0cjxDbGlwUGF0
aE9wZXJhdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTUyMyw3ICs1MjMsNyBA
QCBpbmxpbmUgUGFzc1JlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5bAogICAgICAgICBvcGVyYXRpb24gPSBCb3hDbGlwUGF0
aE9wZXJhdGlvbjo6Y3JlYXRlKHJlZmVyZW5jZUJveCk7CiAgICAgfQogCi0gICAgcmV0dXJuIG9w
ZXJhdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG9wZXJhdGlvbjsKIH0KIAogaW5saW5lIEVS
ZXNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVzaXplKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTYxNiw3ICs2MTYsNyBAQCBpbmxp
bmUgVGV4dFVuZGVybGluZVBvc2l0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRl
eHRVbmRlcmxpbmVQb3NpdGlvbgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VW5kZXJsaW5l
UG9zaXRpb24+KGNvbWJpbmVkUG9zaXRpb24pOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxTdHls
ZVJlZmxlY3Rpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlZmxlY3Rpb24oU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZlB0
cjxTdHlsZVJlZmxlY3Rpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlZmxlY3Rp
b24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpOwpAQCAtNjI1LDcgKzYyNSw3IEBAIGlubGluZSBQYXNzUmVmUHRyPFN0eWxlUmVmbGVjdGlv
bj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbihTdHlsCiAKICAgICBh
dXRvJiByZWZsZWN0VmFsdWUgPSBkb3duY2FzdDxDU1NSZWZsZWN0VmFsdWU+KHZhbHVlKTsKIAot
ICAgIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IHJlZmxlY3Rpb24gPSBTdHlsZVJlZmxlY3Rpb246
OmNyZWF0ZSgpOworICAgIGF1dG8gcmVmbGVjdGlvbiA9IFN0eWxlUmVmbGVjdGlvbjo6Y3JlYXRl
KCk7CiAgICAgcmVmbGVjdGlvbi0+c2V0RGlyZWN0aW9uKCpyZWZsZWN0VmFsdWUuZGlyZWN0aW9u
KCkpOwogCiAgICAgaWYgKHJlZmxlY3RWYWx1ZS5vZmZzZXQoKSkKQEAgLTYzNiw3ICs2MzYsNyBA
QCBpbmxpbmUgUGFzc1JlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFJlZmxlY3Rpb24oU3R5bAogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGVNYXAoKS0+
bWFwTmluZVBpZWNlSW1hZ2UoQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0LCByZWZsZWN0VmFs
dWUubWFzaygpLCBtYXNrKTsKICAgICByZWZsZWN0aW9uLT5zZXRNYXNrKG1hc2spOwogCi0gICAg
cmV0dXJuIHJlZmxlY3Rpb24ucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHJlZmxlY3Rp
b24pOwogfQogCiBpbmxpbmUgSW50U2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRJ
bml0aWFsTGV0dGVyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMWI3YTM5ZjNlZDBjNzQ3ZTE5YmRlYWUyOGZhNjZk
ZmNkNWFkOGY1OS4uMzc1ZTQxMGU3NjA5ZjNiYTE0YTE3MWVkN2I3YmJiNjU4Mzk4M2EwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTY3OSwxMiArMTY3OSwxMiBAQCBQ
YXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlSW1hZ2UoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgQ1NTVmFsdQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVm
UHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZVZhbHVlJiB2YWx1ZSkKK1JlZlB0cjxTdHls
ZUltYWdlPiBTdHlsZVJlc29sdmVyOjpjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgQ1NTSW1hZ2VWYWx1ZSYgdmFsdWUpCiB7CiAgICAgUmVmUHRyPFN0eWxl
SW1hZ2U+IGltYWdlID0gdmFsdWUuY2FjaGVkT3JQZW5kaW5nSW1hZ2UoKTsKICAgICBpZiAoaW1h
Z2UgJiYgaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCiAgICAgICAgIG1fc3RhdGUucGVuZGluZ0lt
YWdlUHJvcGVydGllcygpLnNldChwcm9wZXJ0eSwgJnZhbHVlKTsKLSAgICByZXR1cm4gaW1hZ2Uu
cmVsZWFzZSgpOworICAgIHJldHVybiBpbWFnZTsKIH0KIAogUGFzc1JlZlB0cjxTdHlsZUltYWdl
PiBTdHlsZVJlc29sdmVyOjpnZW5lcmF0ZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgdmFsdWUpCkBAIC0xNzAyLDIxICsx
NzAyLDIxIEBAIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6Z2VuZXJhdGVk
T3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQKIH0KIAogI2lmIEVOQUJMRShDU1NfSU1B
R0VfU0VUKQotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzZXRPclBlbmRp
bmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTSW1hZ2VTZXRWYWx1ZSYgdmFs
dWUpCitSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6c2V0T3JQZW5kaW5nRnJvbVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0ltYWdlU2V0VmFsdWUmIHZhbHVlKQogewog
ICAgIFJlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSA9IHZhbHVlLmNhY2hlZE9yUGVuZGluZ0ltYWdl
U2V0KGRvY3VtZW50KCkpOwogICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNQZW5kaW5nSW1hZ2Uo
KSkKICAgICAgICAgbV9zdGF0ZS5wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKCkuc2V0KHByb3BlcnR5
LCAmdmFsdWUpOwotICAgIHJldHVybiBpbWFnZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGltYWdl
OwogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6Y3Vy
c29yT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0N1cnNvcklt
YWdlVmFsdWUmIHZhbHVlKQorUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmN1cnNv
ck9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NDdXJzb3JJbWFn
ZVZhbHVlJiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UgPSB2YWx1ZS5j
YWNoZWRPclBlbmRpbmdJbWFnZShkb2N1bWVudCgpKTsKICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ut
PmlzUGVuZGluZ0ltYWdlKCkpCiAgICAgICAgIG1fc3RhdGUucGVuZGluZ0ltYWdlUHJvcGVydGll
cygpLnNldChwcm9wZXJ0eSwgJnZhbHVlKTsKLSAgICByZXR1cm4gaW1hZ2UucmVsZWFzZSgpOwor
ICAgIHJldHVybiBpbWFnZTsKIH0KIAogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNTI4ZGM0OGY3NGE1MTQ2ZWFiNjM5MWRm
MzFlZGE5NmEwZjllZTdiYi4uOTNhZWZmMDBkYjk2ODgzOTc0YjZhMTY5OTkxZTNlMzExYWI4ZThj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC00NTksMTIgKzQ1OSwxMiBAQCBw
dWJsaWM6CiAgICAgU3RhdGUmIHN0YXRlKCkgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiAgICAgUGFz
c1JlZlB0cjxTdHlsZUltYWdlPiBzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJik7
Ci0gICAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NT
UHJvcGVydHlJRCwgQ1NTSW1hZ2VWYWx1ZSYpOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBjYWNo
ZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTSW1hZ2VWYWx1ZSYpOwogICAg
IFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gZ2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1By
b3BlcnR5SUQsIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmKTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdF
X1NFVCkKLSAgICBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IHNldE9yUGVuZGluZ0Zyb21WYWx1ZShD
U1NQcm9wZXJ0eUlELCBDU1NJbWFnZVNldFZhbHVlJik7CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+
IHNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NJbWFnZVNldFZhbHVlJik7
CiAjZW5kaWYKLSAgICBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGN1cnNvck9yUGVuZGluZ0Zyb21W
YWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NDdXJzb3JJbWFnZVZhbHVlJik7CisgICAgUmVmUHRyPFN0
eWxlSW1hZ2U+IGN1cnNvck9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NDdXJz
b3JJbWFnZVZhbHVlJik7CiAKICAgICBib29sIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCk7IH0K
ICAgICBib29sIGFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlLmNwcAppbmRleCAxMTZjMTI5NzVlOWViODNiNTQ4ZDQ1MmEyMzgwYTkxZTljZDJj
MGZmLi5iMzBmNzI1MjQ0OTcyNzk1MTllNzlhZjc3NWFmYmM5ZjNmODBlMzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBT
dHlsZVJ1bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gUmVmPFN0eWxlUnVsZUJhc2U+
KCpzdGF0aWNfY2FzdDxTdHlsZVJ1bGVCYXNlKj4obnVsbHB0cikpOwogfQogCi1QYXNzUmVmUHRy
PENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKK1JlZlB0cjxDU1NSdWxl
PiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50
U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1J1bGU+
IHJ1bGU7CiAgICAgU3R5bGVSdWxlQmFzZSYgc2VsZiA9IGNvbnN0X2Nhc3Q8U3R5bGVSdWxlQmFz
ZSY+KCp0aGlzKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGU+IFN0eWxl
UnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldAog
ICAgIH0KICAgICBpZiAocGFyZW50UnVsZSkKICAgICAgICAgcnVsZS0+c2V0UGFyZW50UnVsZShw
YXJlbnRSdWxlKTsKLSAgICByZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7
CiB9CiAKIHVuc2lnbmVkIFN0eWxlUnVsZTo6YXZlcmFnZVNpemVJbkJ5dGVzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAppbmRleCBlMmY4OTcyOGQwOWMxMGY5OWI4OWM5Njg2ODYxZTMzMGNkMjM3MTgw
Li5mNTY1MTM2NGQxZGVhMjg3ZjRmNTNkOWJhMDFlNWFjYjQ4OTk4YzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZS5oCkBAIC05NCw3ICs5NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9p
ZCBkZXN0cm95KCk7CiAgICAgCi0gICAgUGFzc1JlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdy
YXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNv
bnN0OworICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVl
dCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiAgICAgdW5zaWdu
ZWQgbV90eXBlIDogNTsKICAgICBzaWduZWQgbV9zb3VyY2VMaW5lIDogMjc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5j
cHAKaW5kZXggMjQ3ZmQzZmQ2M2QyM2NhZDVlOGExNGYxOWYzMDFmNmJhZGMwYTI2YS4uNDA1ZTZk
M2RjNTYxNDljMjliMmRiZjZmNjEzODBlZTQ5ZThjNWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAt
NTIsMTggKzUyLDE4IEBAIEF0dHI6OkF0dHIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0CiB7CiB9CiAKLVJlZlB0cjxB
dHRyPiBBdHRyOjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkKK1JlZjxBdHRyPiBBdHRyOjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSkKIHsKLSAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGFkb3B0UmVmKG5l
dyBBdHRyKGVsZW1lbnQsIG5hbWUpKTsKKyAgICBSZWY8QXR0cj4gYXR0ciA9IGFkb3B0UmVmKCpu
ZXcgQXR0cihlbGVtZW50LCBuYW1lKSk7CiAgICAgYXR0ci0+Y3JlYXRlVGV4dENoaWxkKCk7Ci0g
ICAgcmV0dXJuIGF0dHIucmVsZWFzZSgpOworICAgIHJldHVybiBhdHRyOwogfQogCi1SZWZQdHI8
QXR0cj4gQXR0cjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK1JlZjxBdHRyPiBBdHRyOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gYWRvcHRSZWYo
bmV3IEF0dHIoZG9jdW1lbnQsIG5hbWUsIHZhbHVlKSk7CisgICAgUmVmPEF0dHI+IGF0dHIgPSBh
ZG9wdFJlZigqbmV3IEF0dHIoZG9jdW1lbnQsIG5hbWUsIHZhbHVlKSk7CiAgICAgYXR0ci0+Y3Jl
YXRlVGV4dENoaWxkKCk7Ci0gICAgcmV0dXJuIGF0dHIucmVsZWFzZSgpOworICAgIHJldHVybiBh
dHRyOwogfQogCiBBdHRyOjp+QXR0cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCBkMDRiOWYwMWEwOGFhNDVi
OTllYTQ5NjMzOTNjZDU5ZWI2ZDRjYzAxLi45MDY0MzMwMDA4YTgwNDBiM2E2YjMzY2NjM2EzOTEx
ODg1ZTU1YTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTQyLDggKzQyLDggQEAgY2xhc3MgTXV0YWJsZVN0
eWxlUHJvcGVydGllczsKIAogY2xhc3MgQXR0ciBmaW5hbCA6IHB1YmxpYyBDb250YWluZXJOb2Rl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEF0dHI+IGNyZWF0ZShFbGVtZW50KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHN0YXRpYyBSZWZQdHI8QXR0cj4gY3JlYXRlKERvY3Vt
ZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwor
ICAgIHN0YXRpYyBSZWY8QXR0cj4gY3JlYXRlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgc3RhdGljIFJlZjxBdHRyPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAgICAgdmlydHVhbCB+QXR0cigp
OwogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBxdWFsaWZpZWROYW1lKCkudG9T
dHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggZmQyY2M0OWMyODFh
OGYwZDc1OGU4YzM1NGRmMjQ2NGI5M2EzYmNhMy4uZWRmNDA0MmU2MGYzMDc5ZTMzNjIxMmIwOWIx
ZDFjYjg3NGQxODg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0yMDksMTMg
KzIwOSwxMyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPE5vZGU+IG5leHROb2RlKCkKICAgICB7CiAg
ICAgICAgIGlmIChMSUtFTFkoIWhhc1NuYXBzaG90KCkpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8
Tm9kZT4gbm9kZSA9IG1fY3VycmVudE5vZGUucmVsZWFzZSgpOworICAgICAgICAgICAgUmVmUHRy
PE5vZGU+IG5vZGUgPSBXVEZNb3ZlKG1fY3VycmVudE5vZGUpOwogICAgICAgICAgICAgaWYgKG5v
ZGUpCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7
Ci0gICAgICAgICAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4g
bm9kZTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9jdXJyZW50SW5kZXggPj0gbV9zbmFwc2hv
dC5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICByZXR1cm4gbV9zbmFwc2hvdFttX2N1cnJlbnRJbmRleCsrXTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZmZWFlMmFjMDFlODk0NGQ4MGNkNTIwZTc0
YTgzMWYwNGRiMDM2ZjQuLmMwNjkyYWQ2NmNlODUyMGJhZWQ2Y2JmN2Y2YTNkYmZlYmJmMDlkZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzc1Miw3ICszNzUyLDcgQEAgYm9vbCBEb2N1
bWVudDo6c2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGZvY3VzQ2hhbmdl
QmxvY2tlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxFbGVtZW50PiBvbGRGb2N1c2VkRWxlbWVudCA9
IG1fZm9jdXNlZEVsZW1lbnQucmVsZWFzZSgpOworICAgIFJlZlB0cjxFbGVtZW50PiBvbGRGb2N1
c2VkRWxlbWVudCA9IFdURk1vdmUobV9mb2N1c2VkRWxlbWVudCk7CiAKICAgICAvLyBSZW1vdmUg
Zm9jdXMgZnJvbSB0aGUgZXhpc3RpbmcgZm9jdXMgbm9kZSAoaWYgYW55KQogICAgIGlmIChvbGRG
b2N1c2VkRWxlbWVudCkgewpAQCAtNDA2OCw3ICs0MDY4LDcgQEAgdm9pZCBEb2N1bWVudDo6dGFr
ZURPTVdpbmRvd0Zyb20oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIC8vIEEgdmFsaWQgRE9NV2lu
ZG93IGlzIG5lZWRlZCBieSBDYWNoZWRGcmFtZSBmb3IgaXRzIGRvY3VtZW50cy4KICAgICBBU1NF
UlQoIWRvY3VtZW50LT5pblBhZ2VDYWNoZSgpKTsKIAotICAgIG1fZG9tV2luZG93ID0gZG9jdW1l
bnQtPm1fZG9tV2luZG93LnJlbGVhc2UoKTsKKyAgICBtX2RvbVdpbmRvdyA9IFdURk1vdmUoZG9j
dW1lbnQtPm1fZG9tV2luZG93KTsKICAgICBtX2RvbVdpbmRvdy0+ZGlkU2VjdXJlVHJhbnNpdGlv
blRvKHRoaXMpOwogCiAgICAgQVNTRVJUKG1fZG9tV2luZG93LT5kb2N1bWVudCgpID09IHRoaXMp
OwpAQCAtNjU3Myw3ICs2NTczLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVT
dGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgRWxlbWVudCogaW4KICAgICAvLyBh
dCB0aGUgdGltZSB0aGUgbW91c2Ugd2VudCBkb3duLgogICAgIGJvb2wgbXVzdEJlSW5BY3RpdmVD
aGFpbiA9IHJlcXVlc3QuYWN0aXZlKCkgJiYgcmVxdWVzdC5tb3ZlKCk7CiAKLSAgICBSZWZQdHI8
RWxlbWVudD4gb2xkSG92ZXJlZEVsZW1lbnQgPSBtX2hvdmVyZWRFbGVtZW50LnJlbGVhc2UoKTsK
KyAgICBSZWZQdHI8RWxlbWVudD4gb2xkSG92ZXJlZEVsZW1lbnQgPSBXVEZNb3ZlKG1faG92ZXJl
ZEVsZW1lbnQpOwogCiAgICAgLy8gQSB0b3VjaCByZWxlYXNlIGRvZXMgbm90IHNldCBhIG5ldyBo
b3ZlciB0YXJnZXQ7IGNsZWFyaW5nIHRoZSBlbGVtZW50IHdlJ3JlIHdvcmtpbmcgd2l0aAogICAg
IC8vIHdpbGwgY2xlYXIgdGhlIGNoYWluIG9mIGhvdmVyZWQgZWxlbWVudHMgYWxsIHRoZSB3YXkg
dG8gdGhlIHRvcCBvZiB0aGUgdHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA3ZGRjNThh
ZDI4M2EyNzdhZTg1NDBhNzlmZDBlMTUyNWJkMjgxYmRlLi5jNmViNDA2MTRiMzI3OTY2Mzg0NzU0
NzNiNTJkMTU5OWY1NTQ1NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zNjksNyArMzY5
LDcgQEAgUmVmPEVsZW1lbnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVz
QW5kQ2hpbGRyZW4oRG9jdW1lbnQmIHRhcmdldEQKICAgICByZXR1cm4gdGFyZ2V0RG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCh0YWdRTmFtZSgpLCBmYWxzZSk7CiB9CiAKLVJlZlB0cjxBdHRyPiBFbGVt
ZW50OjpkZXRhY2hBdHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpCitSZWY8QXR0cj4gRWxlbWVudDo6
ZGV0YWNoQXR0cmlidXRlKHVuc2lnbmVkIGluZGV4KQogewogICAgIEFTU0VSVChlbGVtZW50RGF0
YSgpKTsKIApAQCAtMzgyLDcgKzM4Miw3IEBAIFJlZlB0cjxBdHRyPiBFbGVtZW50OjpkZXRhY2hB
dHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIGF0dHJOb2RlID0gQXR0cjo6Y3JlYXRl
KGRvY3VtZW50KCksIGF0dHJpYnV0ZS5uYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsKIAogICAg
IHJlbW92ZUF0dHJpYnV0ZUludGVybmFsKGluZGV4LCBOb3RJblN5bmNocm9uaXphdGlvbk9mTGF6
eUF0dHJpYnV0ZSk7Ci0gICAgcmV0dXJuIGF0dHJOb2RlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
YXR0ck5vZGUucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogYm9vbCBFbGVtZW50OjpyZW1vdmVBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKQEAgLTE5OTgsNyArMTk5OCw3IEBAIFJl
ZlB0cjxBdHRyPiBFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0ciYgYXR0ck5vZGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIHRyZWVTY29wZSgpLmFkb3B0SWZOZWVkZWQoJmF0dHJOb2Rl
KTsKICAgICBlbnN1cmVBdHRyTm9kZUxpc3RGb3JFbGVtZW50KCp0aGlzKS5hcHBlbmQoJmF0dHJO
b2RlKTsKIAotICAgIHJldHVybiBvbGRBdHRyTm9kZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG9s
ZEF0dHJOb2RlOwogfQogCiBSZWZQdHI8QXR0cj4gRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9k
ZShBdHRyJiBhdHRyLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTMxNjcsNyArMzE2Nyw3IEBAIFJl
ZlB0cjxBdHRyPiBFbGVtZW50OjphdHRySWZFeGlzdHMoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmVuc3Vy
ZUF0dHIoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK1JlZjxBdHRyPiBFbGVtZW50OjplbnN1
cmVBdHRyKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7CiAgICAgYXV0byYgYXR0ck5vZGVM
aXN0ID0gZW5zdXJlQXR0ck5vZGVMaXN0Rm9yRWxlbWVudCgqdGhpcyk7CiAgICAgUmVmUHRyPEF0
dHI+IGF0dHJOb2RlID0gZmluZEF0dHJOb2RlSW5MaXN0KGF0dHJOb2RlTGlzdCwgbmFtZSk7CkBA
IC0zMTc2LDcgKzMxNzYsNyBAQCBSZWZQdHI8QXR0cj4gRWxlbWVudDo6ZW5zdXJlQXR0cihjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lKQogICAgICAgICB0cmVlU2NvcGUoKS5hZG9wdElmTmVlZGVk
KGF0dHJOb2RlLmdldCgpKTsKICAgICAgICAgYXR0ck5vZGVMaXN0LmFwcGVuZChhdHRyTm9kZSk7
CiAgICAgfQotICAgIHJldHVybiBhdHRyTm9kZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGF0dHJO
b2RlLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGV0YWNoQXR0ck5vZGVG
cm9tRWxlbWVudFdpdGhWYWx1ZShBdHRyKiBhdHRyTm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGI4ODQxNGI3MzE3MDUyOWE1MGEzOWYwZWYyMTc0
Zjc0MGYyNzhkNGIuLjZjODA0ZGIxOGRmZDYxYTdlMzkxMjg3YWM5MzA5OTcwMGU3ZjIwYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaApAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICBib29sIHJl
bW92ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwogICAgIGJvb2wgcmVtb3Zl
QXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxOYW1lKTsKIAotICAgIFJlZlB0cjxBdHRyPiBkZXRhY2hBdHRyaWJ1dGUo
dW5zaWduZWQgaW5kZXgpOworICAgIFJlZjxBdHRyPiBkZXRhY2hBdHRyaWJ1dGUodW5zaWduZWQg
aW5kZXgpOwogCiAgICAgUmVmUHRyPEF0dHI+IGdldEF0dHJpYnV0ZU5vZGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKTsKICAgICBSZWZQdHI8QXR0cj4gZ2V0QXR0cmlidXRlTm9kZU5TKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFt
ZSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEF0dHI+IGF0dHJJ
ZkV4aXN0cyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgUmVmUHRyPEF0dHI+IGF0dHJJZkV4
aXN0cyhjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRy
aWJ1dGVDYXNlKTsKLSAgICBSZWZQdHI8QXR0cj4gZW5zdXJlQXR0cihjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgUmVmPEF0dHI+IGVuc3VyZUF0dHIoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxBdHRyPj4mIGF0dHJOb2RlTGlzdCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCAyZjU2MTJhYTcwYjUxY2Q5MmY1ZjkzOGUxODk3
MGFmNGZlODNmZGUwLi41YTg0YTQ0YTIwOGFiZWJlNDEzYjk5ZjExZTZmNTAxMTlkYTQwMmI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIE1l
c3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9y
dDo6ZW50YW5nbGVQb3J0cygqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXVEZNb3ZlKGNoYW5u
ZWxzKSk7Ci0gICAgICAgIFJlZjxFdmVudD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShX
VEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5yZWxlYXNlKCkpOworICAgICAgICBSZWY8RXZlbnQ+IGV2
ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIFdURk1vdmUobWVzc2Fn
ZSkpOwogICAgICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICB9CiB9CkBAIC0yMTQsOSAr
MjE0LDkgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IE1lc3NhZ2VQb3J0Ojpl
bnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnQKIAogICAgIGF1dG8gcG9ydEFycmF5ID0g
c3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUG9ydEFycmF5PihjaGFubmVscy0+c2l6ZSgpKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNoYW5uZWxzLT5zaXplKCk7ICsraSkgewot
ICAgICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBNZXNzYWdlUG9ydDo6Y3JlYXRlKGNv
bnRleHQpOworICAgICAgICBhdXRvIHBvcnQgPSBNZXNzYWdlUG9ydDo6Y3JlYXRlKGNvbnRleHQp
OwogICAgICAgICBwb3J0LT5lbnRhbmdsZShXVEZNb3ZlKCgqY2hhbm5lbHMpW2ldKSk7Ci0gICAg
ICAgICgqcG9ydEFycmF5KVtpXSA9IHBvcnQucmVsZWFzZSgpOworICAgICAgICAoKnBvcnRBcnJh
eSlbaV0gPSBXVEZNb3ZlKHBvcnQpOwogICAgIH0KICAgICByZXR1cm4gcG9ydEFycmF5OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAppbmRleCBiNTllMGY5YTUzODc0MjdlNjVjOWIx
M2QxMjU0ZjllYTUzZjBiNGZkLi4zYzVhYmIwZjQzYWFiZTg2YmU5MGE4ZGY1NWQyN2JkZTkwZGVh
OTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcApAQCAtOTcsNyArOTcsNyBAQCBS
ZWZQdHI8Tm9kZT4gTm9kZUl0ZXJhdG9yOjpuZXh0Tm9kZSgpCiAgICAgICAgIGJvb2wgbm9kZVdh
c0FjY2VwdGVkID0gYWNjZXB0Tm9kZShwcm92aXNpb25hbFJlc3VsdC5nZXQoKSkgPT0gTm9kZUZp
bHRlcjo6RklMVEVSX0FDQ0VQVDsKICAgICAgICAgaWYgKG5vZGVXYXNBY2NlcHRlZCkgewogICAg
ICAgICAgICAgbV9yZWZlcmVuY2VOb2RlID0gbV9jYW5kaWRhdGVOb2RlOwotICAgICAgICAgICAg
cmVzdWx0ID0gcHJvdmlzaW9uYWxSZXN1bHQucmVsZWFzZSgpOworICAgICAgICAgICAgcmVzdWx0
ID0gV1RGTW92ZShwcm92aXNpb25hbFJlc3VsdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KQEAgLTExOSw3ICsxMTksNyBAQCBSZWZQdHI8Tm9kZT4gTm9kZUl0ZXJhdG9y
OjpwcmV2aW91c05vZGUoKQogICAgICAgICBib29sIG5vZGVXYXNBY2NlcHRlZCA9IGFjY2VwdE5v
ZGUocHJvdmlzaW9uYWxSZXN1bHQuZ2V0KCkpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ7
CiAgICAgICAgIGlmIChub2RlV2FzQWNjZXB0ZWQpIHsKICAgICAgICAgICAgIG1fcmVmZXJlbmNl
Tm9kZSA9IG1fY2FuZGlkYXRlTm9kZTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHByb3Zpc2lvbmFs
UmVzdWx0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IFdURk1vdmUocHJvdmlzaW9u
YWxSZXN1bHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcAppbmRleCAzZGNmNmE4M2U1ZTY2ODZmNWEwN2VlZmQzODg4MmI3ZDU5ODMxZWMxLi5l
NGYxMWZhNTA5NzRmNzU1MGE1MGRmMzU5YTRmOTY3M2I4ODEwZmVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5j
cHAKQEAgLTY3MCwxMyArNjcwLDEzIEBAIFJlZlB0cjxOb2RlPiBSYW5nZTo6cHJvY2Vzc0NvbnRl
bnRzQmV0d2Vlbk9mZnNldHMoQWN0aW9uVHlwZSBhY3Rpb24sIFBhc3NSZWZQdHI8CiAgICAgICAg
IGVuZE9mZnNldCA9IHN0ZDo6bWluKGVuZE9mZnNldCwgc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyRGF0
YSo+KGNvbnRhaW5lciktPmxlbmd0aCgpKTsKICAgICAgICAgc3RhcnRPZmZzZXQgPSBzdGQ6Om1p
bihzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKICAgICAgICAgaWYgKGFjdGlvbiA9PSBFeHRyYWN0
IHx8IGFjdGlvbiA9PSBDbG9uZSkgewotICAgICAgICAgICAgUmVmUHRyPENoYXJhY3RlckRhdGE+
IGMgPSBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJEYXRhKj4oY29udGFpbmVyLT5jbG9uZU5vZGUodHJ1
ZSkucHRyKCkpOwotICAgICAgICAgICAgZGVsZXRlQ2hhcmFjdGVyRGF0YShjLCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0LCBlYyk7CisgICAgICAgICAgICBSZWZQdHI8Q2hhcmFjdGVyRGF0YT4gY2hh
cmFjdGVycyA9IHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEqPihjb250YWluZXItPmNsb25lTm9k
ZSh0cnVlKS5wdHIoKSk7CisgICAgICAgICAgICBkZWxldGVDaGFyYWN0ZXJEYXRhKGNoYXJhY3Rl
cnMsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGVjKTsKICAgICAgICAgICAgIGlmIChmcmFnbWVu
dCkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZyYWdtZW50OwotICAgICAgICAgICAgICAg
IHJlc3VsdC0+YXBwZW5kQ2hpbGQoYy5yZWxlYXNlKCksIGVjKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQtPmFwcGVuZENoaWxkKGNoYXJhY3RlcnMucmVsZWFzZSgpLCBlYyk7CiAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBjLnJlbGVhc2UoKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGNoYXJhY3RlcnMpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChhY3Rpb24gPT0gRXh0cmFjdCB8fCBhY3Rpb24gPT0gRGVsZXRlKQogICAgICAgICAgICAg
ZG93bmNhc3Q8Q2hhcmFjdGVyRGF0YT4oKmNvbnRhaW5lcikuZGVsZXRlRGF0YShzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0IC0gc3RhcnRPZmZzZXQsIGVjKTsKQEAgLTY4NSwxMyArNjg1LDEzIEBAIFJl
ZlB0cjxOb2RlPiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMoQWN0aW9uVHlw
ZSBhY3Rpb24sIFBhc3NSZWZQdHI8CiAgICAgICAgIGVuZE9mZnNldCA9IHN0ZDo6bWluKGVuZE9m
ZnNldCwgc3RhdGljX2Nhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4oY29udGFpbmVyKS0+ZGF0
YSgpLmxlbmd0aCgpKTsKICAgICAgICAgc3RhcnRPZmZzZXQgPSBzdGQ6Om1pbihzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KTsKICAgICAgICAgaWYgKGFjdGlvbiA9PSBFeHRyYWN0IHx8IGFjdGlvbiA9
PSBDbG9uZSkgewotICAgICAgICAgICAgUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gYyA9
IHN0YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KGNvbnRhaW5lci0+Y2xvbmVOb2Rl
KHRydWUpLnB0cigpKTsKLSAgICAgICAgICAgIGMtPnNldERhdGEoYy0+ZGF0YSgpLnN1YnN0cmlu
ZyhzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gc3RhcnRPZmZzZXQpKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IHByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IHN0YXRp
Y19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KGNvbnRhaW5lci0+Y2xvbmVOb2RlKHRydWUp
LnB0cigpKTsKKyAgICAgICAgICAgIHByb2Nlc3NpbmdJbnN0cnVjdGlvbi0+c2V0RGF0YShwcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24tPmRhdGEoKS5zdWJzdHJpbmcoc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCAtIHN0YXJ0T2Zmc2V0KSk7CiAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpIHsKICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBmcmFnbWVudDsKLSAgICAgICAgICAgICAgICByZXN1bHQtPmFwcGVu
ZENoaWxkKGMucmVsZWFzZSgpLCBlYyk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmRD
aGlsZChwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ucmVsZWFzZSgpLCBlYyk7CiAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBjLnJlbGVhc2UoKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBXVEZNb3ZlKHByb2Nlc3NpbmdJbnN0cnVjdGlvbik7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGFjdGlvbiA9PSBFeHRyYWN0IHx8IGFjdGlvbiA9PSBEZWxldGUpIHsKICAg
ICAgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiYgcGkgPSBkb3duY2FzdDxQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24+KCpjb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3Bw
CmluZGV4IGU3YzMyOGE0NDAxNTRlZDQ3ZGVkMWJmOWI3ODhhN2JiZGU0MDU2MzIuLjAwM2M0MWVk
NmUwNDYxNDM3M2I5Njc4YjQ0N2Y4NTRhMzc1NTZmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVk
RWxlbWVudC5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnJlYnVp
bGRQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJl
c2VudGF0aW9uQXR0cmlidXRlQ2FjaGVFbnRyeT4gbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVl
PFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlRW50cnk+KCk7CiAgICAgbmV3RW50cnktPmtleSA9
IGNhY2hlS2V5OwotICAgIG5ld0VudHJ5LT52YWx1ZSA9IHN0eWxlLnJlbGVhc2UoKTsKKyAgICBu
ZXdFbnRyeS0+dmFsdWUgPSBXVEZNb3ZlKHN0eWxlKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQg
cHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVNYXhpbXVtU2l6ZSA9IDQwOTY7CiAgICAgaWYgKHBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkuc2l6ZSgpID4gcHJlc2VudGF0aW9uQXR0cmlidXRl
Q2FjaGVNYXhpbXVtU2l6ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eUJsb2NrRWxlbWVudENvbW1hbmQuY3BwCmluZGV4IDA0YzdkNDI5OTUwMTZiMDJmZDM1ZDgyMDc4
MjFjZGU5NTgyZmFkODQuLjdlZGE4ZDM3OWUxYjVhMDcyZTI4YmZlM2I0ZmIzYWUzZmRhZDQzMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29t
bWFuZC5jcHAKQEAgLTI5MiwxMiArMjkyLDEyIEBAIFZpc2libGVQb3NpdGlvbiBBcHBseUJsb2Nr
RWxlbWVudENvbW1hbmQ6OmVuZE9mTmV4dFBhcmFncmFwaFNwbGl0dGluZ1RleHROb2Rlc0lmCiAg
ICAgcmV0dXJuIFBvc2l0aW9uKHRleHQuZ2V0KCksIHBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVy
Tm9kZSgpIC0gMSk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gQXBwbHlCbG9ja0VsZW1lbnRD
b21tYW5kOjpjcmVhdGVCbG9ja0VsZW1lbnQoKQorUmVmPEhUTUxFbGVtZW50PiBBcHBseUJsb2Nr
RWxlbWVudENvbW1hbmQ6OmNyZWF0ZUJsb2NrRWxlbWVudCgpCiB7Ci0gICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudChkb2N1bWVudCgpLCBtX3RhZ05hbWUpOwor
ICAgIGF1dG8gZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KGRvY3VtZW50KCksIG1fdGFnTmFt
ZSk7CiAgICAgaWYgKG1faW5saW5lU3R5bGUubGVuZ3RoKCkpCiAgICAgICAgIGVsZW1lbnQtPnNl
dEF0dHJpYnV0ZShzdHlsZUF0dHIsIG1faW5saW5lU3R5bGUpOwotICAgIHJldHVybiBlbGVtZW50
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZWxlbWVudDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmgKaW5kZXggZWY4N2MwZDdk
NWFjZjc3YzQ0YWI5ZGUxYmNlNDUwOWQ1ZGI3NjAwZC4uZDMzZTNjNGY3ZWYyMmY2YzUwMGM1NDA5
ZjZmYTUyODRiMTY2MThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eUJsb2NrRWxlbWVudENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
QmxvY2tFbGVtZW50Q29tbWFuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHByb3RlY3RlZDoKICAgICBB
cHBseUJsb2NrRWxlbWVudENvbW1hbmQoRG9jdW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lKTsKIAogICAgIHZpcnR1YWwgdm9pZCBmb3JtYXRTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBzdGFydE9mU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGVuZE9m
U2VsZWN0aW9uKTsKLSAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUJsb2NrRWxlbWVudCgp
OworICAgIFJlZjxIVE1MRWxlbWVudD4gY3JlYXRlQmxvY2tFbGVtZW50KCk7CiAgICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSB0YWdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lOyB9CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmlu
ZGV4IGFjNDY0ODg5ZTkxZjNmMWUwOWVlMDVhYzQ1MWRkMmNmNTRkZjkxNjEuLmIxN2RlYTBhZDhh
N2RkOWE4MGM4NWY5OGU0ODc3ZmJkNTYyMDM2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC0zOTgsOSArMzk4LDkgQEAgdm9pZCBBcHBseVN0
eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbnRTdHlsZUNoYW5nZShFZGl0aW5nU3R5bGUqIHN0
eWxlKQogICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSAmJiBub2RlLT5yZW5k
ZXJlcigpICYmIG5vZGUtPnBhcmVudE5vZGUoKSAhPSBsYXN0U3R5bGVkTm9kZSkgewogICAgICAg
ICAgICAgLy8gTGFzdCBzdHlsZWQgbm9kZSB3YXMgbm90IHBhcmVudCBub2RlIG9mIHRoaXMgdGV4
dCBub2RlLCBidXQgd2Ugd2lzaCB0byBzdHlsZSB0aGlzCiAgICAgICAgICAgICAvLyB0ZXh0IG5v
ZGUuIFRvIG1ha2UgdGhpcyBwb3NzaWJsZSwgYWRkIGEgc3R5bGUgc3BhbiB0byBzdXJyb3VuZCB0
aGlzIHRleHQgbm9kZS4KLSAgICAgICAgICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gc3BhbiA9IGNy
ZWF0ZVN0eWxlU3BhbkVsZW1lbnQoZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBhdXRvIHNwYW4g
PSBjcmVhdGVTdHlsZVNwYW5FbGVtZW50KGRvY3VtZW50KCkpOwogICAgICAgICAgICAgc3Vycm91
bmROb2RlUmFuZ2VXaXRoRWxlbWVudChub2RlLCBub2RlLCBzcGFuLmdldCgpKTsKLSAgICAgICAg
ICAgIGVsZW1lbnQgPSBzcGFuLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBXVEZN
b3ZlKHNwYW4pOwogICAgICAgICB9ICBlbHNlIHsKICAgICAgICAgICAgIC8vIE9ubHkgaGFuZGxl
IEhUTUwgZWxlbWVudHMgYW5kIHRleHQgbm9kZXMuCiAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTQyMiw3ICs0MjIsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseVJlbGF0aXZlRm9u
dFN0eWxlQ2hhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUpCiAgICAgICAgIGlmIChpbmxpbmVTdHls
ZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICByZW1vdmVOb2RlQXR0cmlidXRlKGVsZW1lbnQu
Z2V0KCksIHN0eWxlQXR0cik7CiAgICAgICAgICAgICBpZiAoaXNTcGFuV2l0aG91dEF0dHJpYnV0
ZXNPclVuc3R5bGVkU3R5bGVTcGFuKGVsZW1lbnQuZ2V0KCkpKQotICAgICAgICAgICAgICAgIHVu
c3R5bGVkU3BhbnMuYXBwZW5kKGVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICB1
bnN0eWxlZFNwYW5zLmFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApp
bmRleCA3NzE2NWJmYjliY2NkZmExNTc2NDgwNTU2NDlhYjRlYzE0YjlkYjE0Li40ZGQxNzY1NGJi
NTAyMWZlZTE3NTk4MzY0MzYyMDljYTgzYzllNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFBhc3NSZWZQdHI8
RWRpdENvbW1hbmQ+IHBycENvCiAgICAgICAgIGNvbW1hbmQtPnNldFBhcmVudChudWxscHRyKTsK
ICAgICAgICAgZW5zdXJlQ29tcG9zaXRpb24oKS0+YXBwZW5kKHRvU2ltcGxlRWRpdENvbW1hbmQo
Y29tbWFuZC5nZXQoKSkpOwogICAgIH0KLSAgICBtX2NvbW1hbmRzLmFwcGVuZChjb21tYW5kLnJl
bGVhc2UoKSk7CisgICAgbV9jb21tYW5kcy5hcHBlbmQoV1RGTW92ZShjb21tYW5kKSk7CiB9CiAK
IHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFBhc3NS
ZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNvbW1hbmQsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbikKQEAgLTEwMjQsMzUgKzEwMjQsMzUgQEAgdm9pZCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6ZGVsZXRlSW5zaWduaWZpY2FudFRleHREb3duc3RyZWFtKGNvbnN0IFBvc2l0aW9u
JiBwb3MKICAgICBkZWxldGVJbnNpZ25pZmljYW50VGV4dChwb3MsIGVuZCk7CiB9CiAKLVBhc3NS
ZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGVuZEJsb2NrUGxhY2Vob2xkZXIo
UGFzc1JlZlB0cjxFbGVtZW50PiBjb250YWluZXIpCitSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OmFwcGVuZEJsb2NrUGxhY2Vob2xkZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBjb250
YWluZXIpCiB7CiAgICAgaWYgKCFjb250YWluZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgCiAgICAgLy8gU2hvdWxkIGFzc2VydCBpc0Jsb2NrRmxv
dyB8fCBpc0lubGluZUZsb3cgd2hlbiBkZWxldGlvbiBpbXByb3Zlcy4gU2VlIDQyNDQ5NjQuCiAg
ICAgQVNTRVJUKGNvbnRhaW5lci0+cmVuZGVyZXIoKSk7CiAKLSAgICBSZWZQdHI8Tm9kZT4gcGxh
Y2Vob2xkZXIgPSBjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudChkb2N1bWVudCgpKTsKLSAg
ICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBjb250YWluZXIpOwotICAgIHJldHVybiBwbGFjZWhv
bGRlci5yZWxlYXNlKCk7CisgICAgYXV0byBwbGFjZWhvbGRlciA9IGNyZWF0ZUJsb2NrUGxhY2Vo
b2xkZXJFbGVtZW50KGRvY3VtZW50KCkpOworICAgIGFwcGVuZE5vZGUocGxhY2Vob2xkZXIucHRy
KCksIGNvbnRhaW5lcik7CisgICAgcmV0dXJuIFdURk1vdmUocGxhY2Vob2xkZXIpOwogfQogCi1Q
YXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnRCbG9ja1BsYWNlaG9s
ZGVyKGNvbnN0IFBvc2l0aW9uJiBwb3MpCitSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENvbW1h
bmQ6Omluc2VydEJsb2NrUGxhY2Vob2xkZXIoY29uc3QgUG9zaXRpb24mIHBvcykKIHsKICAgICBp
ZiAocG9zLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBTaG91bGQgYXNzZXJ0IGlzQmxvY2tGbG93IHx8IGlzSW5saW5lRmxvdyB3
aGVuIGRlbGV0aW9uIGltcHJvdmVzLiAgU2VlIDQyNDQ5NjQuCiAgICAgQVNTRVJUKHBvcy5kZXBy
ZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKTsKIAotICAgIFJlZlB0cjxOb2RlPiBwbGFjZWhvbGRl
ciA9IGNyZWF0ZUJsb2NrUGxhY2Vob2xkZXJFbGVtZW50KGRvY3VtZW50KCkpOwotICAgIGluc2Vy
dE5vZGVBdChwbGFjZWhvbGRlciwgcG9zKTsKLSAgICByZXR1cm4gcGxhY2Vob2xkZXIucmVsZWFz
ZSgpOworICAgIGF1dG8gcGxhY2Vob2xkZXIgPSBjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVu
dChkb2N1bWVudCgpKTsKKyAgICBpbnNlcnROb2RlQXQocGxhY2Vob2xkZXIucHRyKCksIHBvcyk7
CisgICAgcmV0dXJuIFdURk1vdmUocGxhY2Vob2xkZXIpOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+
IENvbXBvc2l0ZUVkaXRDb21tYW5kOjphZGRCbG9ja1BsYWNlaG9sZGVySWZOZWVkZWQoRWxlbWVu
dCogY29udGFpbmVyKQorUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjphZGRCbG9j
a1BsYWNlaG9sZGVySWZOZWVkZWQoRWxlbWVudCogY29udGFpbmVyKQogewogICAgIGlmICghY29u
dGFpbmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwODYsMTcgKzEwODYsMTcgQEAg
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlUGxhY2Vob2xkZXJBdChjb25zdCBQb3Np
dGlvbiYgcCkKICAgICBkZWxldGVUZXh0RnJvbU5vZGUoZG93bmNhc3Q8VGV4dD4ocC5hbmNob3JO
b2RlKCkpLCBwLm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCAxKTsKIH0KIAotUGFzc1JlZlB0cjxO
b2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0TmV3RGVmYXVsdFBhcmFncmFwaEVsZW1l
bnRBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCitSZWY8SFRNTEVsZW1lbnQ+IENvbXBvc2l0
ZUVkaXRDb21tYW5kOjppbnNlcnROZXdEZWZhdWx0UGFyYWdyYXBoRWxlbWVudEF0KGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbikKIHsKLSAgICBSZWZQdHI8RWxlbWVudD4gcGFyYWdyYXBoRWxlbWVu
dCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KCkpOworICAgIGF1dG8g
cGFyYWdyYXBoRWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50
KCkpOwogICAgIHBhcmFncmFwaEVsZW1lbnQtPmFwcGVuZENoaWxkKGNyZWF0ZUJyZWFrRWxlbWVu
dChkb2N1bWVudCgpKSwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgaW5zZXJ0Tm9kZUF0KHBhcmFn
cmFwaEVsZW1lbnQsIHBvc2l0aW9uKTsKLSAgICByZXR1cm4gcGFyYWdyYXBoRWxlbWVudC5yZWxl
YXNlKCk7CisgICAgaW5zZXJ0Tm9kZUF0KHBhcmFncmFwaEVsZW1lbnQucHRyKCksIHBvc2l0aW9u
KTsKKyAgICByZXR1cm4gcGFyYWdyYXBoRWxlbWVudDsKIH0KIAogLy8gSWYgdGhlIHBhcmFncmFw
aCBpcyBub3QgZW50aXJlbHkgd2l0aGluIGl0J3Mgb3duIGJsb2NrLCBjcmVhdGUgb25lIGFuZCBt
b3ZlIHRoZSBwYXJhZ3JhcGggaW50byAKIC8vIGl0LCBhbmQgcmV0dXJuIHRoYXQgYmxvY2suICBP
dGhlcndpc2UgcmV0dXJuIDAuCi1QYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5k
Ojptb3ZlUGFyYWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3NhcnkoY29uc3QgUG9zaXRp
b24mIHBvcykKK1JlZlB0cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFw
aENvbnRlbnRzVG9OZXdCbG9ja0lmTmVjZXNzYXJ5KGNvbnN0IFBvc2l0aW9uJiBwb3MpCiB7CiAg
ICAgaWYgKHBvcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTQ4LDE2
ICsxMTQ4LDE2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQ
YXJhZ3JhcGhDb250ZW50c1RvTmV3QmxvY2tJZk5lY2Vzc2FyCiAgICAgLy8gSWYgdXBzdHJlYW1T
dGFydCBpcyBub3QgZWRpdGFibGUsIHRoZW4gd2UgY2FuIGJhaWwgaGVyZS4KICAgICBpZiAoIWlz
RWRpdGFibGVQb3NpdGlvbih1cHN0cmVhbVN0YXJ0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgUmVmUHRyPE5vZGU+IG5ld0Jsb2NrID0gaW5zZXJ0TmV3RGVmYXVsdFBhcmFncmFwaEVs
ZW1lbnRBdCh1cHN0cmVhbVN0YXJ0KTsKKyAgICBhdXRvIG5ld0Jsb2NrID0gaW5zZXJ0TmV3RGVm
YXVsdFBhcmFncmFwaEVsZW1lbnRBdCh1cHN0cmVhbVN0YXJ0KTsKIAogICAgIGJvb2wgZW5kV2Fz
QnIgPSB2aXNpYmxlUGFyYWdyYXBoRW5kLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUo
KS0+aGFzVGFnTmFtZShiclRhZyk7CiAKLSAgICBtb3ZlUGFyYWdyYXBocyh2aXNpYmxlUGFyYWdy
YXBoU3RhcnQsIHZpc2libGVQYXJhZ3JhcGhFbmQsIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0
aW9uSW5Ob2RlKG5ld0Jsb2NrLmdldCgpKSkpOworICAgIG1vdmVQYXJhZ3JhcGhzKHZpc2libGVQ
YXJhZ3JhcGhTdGFydCwgdmlzaWJsZVBhcmFncmFwaEVuZCwgVmlzaWJsZVBvc2l0aW9uKGZpcnN0
UG9zaXRpb25Jbk5vZGUobmV3QmxvY2sucHRyKCkpKSk7CiAKICAgICBpZiAobmV3QmxvY2stPmxh
c3RDaGlsZCgpICYmIG5ld0Jsb2NrLT5sYXN0Q2hpbGQoKS0+aGFzVGFnTmFtZShiclRhZykgJiYg
IWVuZFdhc0JyKQogICAgICAgICByZW1vdmVOb2RlKG5ld0Jsb2NrLT5sYXN0Q2hpbGQoKSk7CiAK
LSAgICByZXR1cm4gbmV3QmxvY2sucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG5ld0Js
b2NrKTsKIH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHVzaEFuY2hvckVsZW1lbnRE
b3duKEVsZW1lbnQmIGFuY2hvckVsZW1lbnQpCkBAIC0xMjAwLDkgKzEyMDAsOSBAQCB2b2lkIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjpjbG9uZVBhcmFncmFwaFVuZGVyTmV3RWxlbWVudChjb25zdCBQ
b3NpdGlvbiYgc3RhcnQsCiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IGFuY2VzdG9ycy5zaXpl
KCk7IGkgIT0gMDsgLS1pKSB7CiAgICAgICAgICAgICBOb2RlKiBpdGVtID0gYW5jZXN0b3JzW2kg
LSAxXS5nZXQoKTsKLSAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9IGl0ZW0tPmNsb25l
Tm9kZShpc1JlbmRlcmVkVGFibGUoaXRlbSkpOwotICAgICAgICAgICAgYXBwZW5kTm9kZShjaGls
ZCwgZG93bmNhc3Q8RWxlbWVudD4obGFzdE5vZGUuZ2V0KCkpKTsKLSAgICAgICAgICAgIGxhc3RO
b2RlID0gY2hpbGQucmVsZWFzZSgpOworICAgICAgICAgICAgYXV0byBjaGlsZCA9IGl0ZW0tPmNs
b25lTm9kZShpc1JlbmRlcmVkVGFibGUoaXRlbSkpOworICAgICAgICAgICAgYXBwZW5kTm9kZShj
aGlsZC5wdHIoKSwgZG93bmNhc3Q8RWxlbWVudD4obGFzdE5vZGUuZ2V0KCkpKTsKKyAgICAgICAg
ICAgIGxhc3ROb2RlID0gV1RGTW92ZShjaGlsZCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEy
MjcsOSArMTIyNyw5IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmNsb25lUGFyYWdyYXBo
VW5kZXJOZXdFbGVtZW50KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwKICAgICAgICAgICAgICAgICBs
YXN0Tm9kZSA9IGxhc3ROb2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIFJlZlB0cjxOb2RlPiBjbG9uZWROb2RlID0gbm9kZS0+Y2xvbmVOb2RlKHRydWUpOwot
ICAgICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyKGNsb25lZE5vZGUsIGxhc3ROb2RlKTsKLSAgICAg
ICAgICAgIGxhc3ROb2RlID0gY2xvbmVkTm9kZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBhdXRv
IGNsb25lZE5vZGUgPSBub2RlLT5jbG9uZU5vZGUodHJ1ZSk7CisgICAgICAgICAgICBpbnNlcnRO
b2RlQWZ0ZXIoY2xvbmVkTm9kZS5wdHIoKSwgbGFzdE5vZGUpOworICAgICAgICAgICAgbGFzdE5v
ZGUgPSBXVEZNb3ZlKGNsb25lZE5vZGUpOwogICAgICAgICAgICAgaWYgKG5vZGUgPT0gZW5kLmRl
cHJlY2F0ZWROb2RlKCkgfHwgZW5kLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKG5v
ZGUuZ2V0KCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNjQ3LDcg
KzE2NDcsNyBAQCBQb3NpdGlvbiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cG9zaXRpb25Bdm9pZGlu
Z1NwZWNpYWxFbGVtZW50Qm91bmRhcnkoY29uc3QgUG9zaQogCiAvLyBTcGxpdHMgdGhlIHRyZWUg
cGFyZW50IGJ5IHBhcmVudCB1bnRpbCB3ZSByZWFjaCB0aGUgc3BlY2lmaWVkIGFuY2VzdG9yLiBX
ZSB1c2UgVmlzaWJsZVBvc2l0aW9ucwogLy8gdG8gZGV0ZXJtaW5lIGlmIHRoZSBzcGxpdCBpcyBu
ZWNlc3NhcnkuIFJldHVybnMgdGhlIGxhc3Qgc3BsaXQgbm9kZS4KLVBhc3NSZWZQdHI8Tm9kZT4g
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnNwbGl0VHJlZVRvTm9kZShOb2RlKiBzdGFydCwgTm9kZSog
ZW5kLCBib29sIHNob3VsZFNwbGl0QW5jZXN0b3IpCitSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OnNwbGl0VHJlZVRvTm9kZShOb2RlKiBzdGFydCwgTm9kZSogZW5kLCBib29sIHNo
b3VsZFNwbGl0QW5jZXN0b3IpCiB7CiAgICAgQVNTRVJUKHN0YXJ0KTsKICAgICBBU1NFUlQoZW5k
KTsKQEAgLTE2NjgsNyArMTY2OCw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OnNwbGl0VHJlZVRvTm9kZShOb2RlKiBzdGFydCwgTm9kZSogZW5kLCBiCiAgICAgICAg
ICAgICBzcGxpdEVsZW1lbnQoZG93bmNhc3Q8RWxlbWVudD4obm9kZS0+cGFyZW50Tm9kZSgpKSwg
bm9kZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIG5vZGUucmVsZWFzZSgpOworICAgIHJldHVybiBu
b2RlOwogfQogCiBSZWY8RWxlbWVudD4gY3JlYXRlQmxvY2tQbGFjZWhvbGRlckVsZW1lbnQoRG9j
dW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5oCmluZGV4IDkxMzM5OGRjNzg2MmNjMzAyNTBmNzU3MTEwMTc2YjVjYTRkNjBjM2Iu
LjRlZTJhZTFjNDNlYjBjZTFlNTYxNzcyYWIzNjQwMGNkZjA1M2ZhYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTE3MCwxNCArMTcwLDE0
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0KGNvbnN0IFBv
c2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCk7CiAgICAgdm9pZCBkZWxldGVJbnNp
Z25pZmljYW50VGV4dERvd25zdHJlYW0oY29uc3QgUG9zaXRpb24mKTsKIAotICAgIFBhc3NSZWZQ
dHI8Tm9kZT4gYXBwZW5kQmxvY2tQbGFjZWhvbGRlcihQYXNzUmVmUHRyPEVsZW1lbnQ+KTsKLSAg
ICBQYXNzUmVmUHRyPE5vZGU+IGluc2VydEJsb2NrUGxhY2Vob2xkZXIoY29uc3QgUG9zaXRpb24m
KTsKLSAgICBQYXNzUmVmUHRyPE5vZGU+IGFkZEJsb2NrUGxhY2Vob2xkZXJJZk5lZWRlZChFbGVt
ZW50Kik7CisgICAgUmVmUHRyPE5vZGU+IGFwcGVuZEJsb2NrUGxhY2Vob2xkZXIoUGFzc1JlZlB0
cjxFbGVtZW50Pik7CisgICAgUmVmUHRyPE5vZGU+IGluc2VydEJsb2NrUGxhY2Vob2xkZXIoY29u
c3QgUG9zaXRpb24mKTsKKyAgICBSZWZQdHI8Tm9kZT4gYWRkQmxvY2tQbGFjZWhvbGRlcklmTmVl
ZGVkKEVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZVBsYWNlaG9sZGVyQXQoY29uc3QgUG9zaXRp
b24mKTsKIAotICAgIFBhc3NSZWZQdHI8Tm9kZT4gaW5zZXJ0TmV3RGVmYXVsdFBhcmFncmFwaEVs
ZW1lbnRBdChjb25zdCBQb3NpdGlvbiYpOworICAgIFJlZjxIVE1MRWxlbWVudD4gaW5zZXJ0TmV3
RGVmYXVsdFBhcmFncmFwaEVsZW1lbnRBdChjb25zdCBQb3NpdGlvbiYpOwogCi0gICAgUGFzc1Jl
ZlB0cjxOb2RlPiBtb3ZlUGFyYWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3NhcnkoY29u
c3QgUG9zaXRpb24mKTsKKyAgICBSZWZQdHI8Tm9kZT4gbW92ZVBhcmFncmFwaENvbnRlbnRzVG9O
ZXdCbG9ja0lmTmVjZXNzYXJ5KGNvbnN0IFBvc2l0aW9uJik7CiAgICAgCiAgICAgdm9pZCBwdXNo
QW5jaG9yRWxlbWVudERvd24oRWxlbWVudCYpOwogICAgIApAQCAtMTkyLDcgKzE5Miw3IEBAIHBy
b3RlY3RlZDoKICAgICAKICAgICBQb3NpdGlvbiBwb3NpdGlvbkF2b2lkaW5nU3BlY2lhbEVsZW1l
bnRCb3VuZGFyeShjb25zdCBQb3NpdGlvbiYpOwogICAgIAotICAgIFBhc3NSZWZQdHI8Tm9kZT4g
c3BsaXRUcmVlVG9Ob2RlKE5vZGUqLCBOb2RlKiwgYm9vbCBzcGxpdEFuY2VzdG9yID0gZmFsc2Up
OworICAgIFJlZlB0cjxOb2RlPiBzcGxpdFRyZWVUb05vZGUoTm9kZSosIE5vZGUqLCBib29sIHNw
bGl0QW5jZXN0b3IgPSBmYWxzZSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPEVkaXRDb21tYW5kPj4g
bV9jb21tYW5kczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4
IDE4OWQ1ODAzZGEyMTE5NGExMjViMjQ2ZDVhNjgwZjYzODgxNDZhOTMuLjUwOGZlNzQzOGYzM2M1
MDk1YTYyMjNjZTE0ZGRmODA5NTI0MzEwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBlbnVtIExlZ2FjeUZvbnRTaXplTW9kZSB7
IEFsd2F5c1VzZUxlZ2FjeUZvbnRTaXplLCBVc2VMZWdhY3lGb250U2l6ZU9ubHlJZlBpeGVsVgog
c3RhdGljIGludCBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShEb2N1bWVudCosIENTU1ByaW1p
dGl2ZVZhbHVlKiwgYm9vbCBzaG91bGRVc2VGaXhlZEZvbnREZWZhdWx0U2l6ZSwgTGVnYWN5Rm9u
dFNpemVNb2RlKTsKIHN0YXRpYyBib29sIGlzVHJhbnNwYXJlbnRDb2xvclZhbHVlKENTU1ZhbHVl
Kik7CiBzdGF0aWMgYm9vbCBoYXNUcmFuc3BhcmVudEJhY2tncm91bmRDb2xvcihTdHlsZVByb3Bl
cnRpZXMqKTsKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBiYWNrZ3JvdW5kQ29sb3JJbkVm
ZmVjdChOb2RlKik7CitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBiYWNrZ3JvdW5kQ29sb3JJbkVm
ZmVjdChOb2RlKik7CiAKIGNsYXNzIEhUTUxFbGVtZW50RXF1aXZhbGVudCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMTg1LDExICsxMTg1LDEwIEBAIHZvaWQgRWRpdGluZ1N0
eWxlOjptZXJnZUlubGluZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCog
ZWxlbWVudCwKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5
bGU6OndyYXBwaW5nU3R5bGVGb3JTZXJpYWxpemF0aW9uKE5vZGUqIGNvbnRleHQsIGJvb2wgc2hv
dWxkQW5ub3RhdGUpCitSZWY8RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5bGU6OndyYXBwaW5nU3R5
bGVGb3JTZXJpYWxpemF0aW9uKE5vZGUqIGNvbnRleHQsIGJvb2wgc2hvdWxkQW5ub3RhdGUpCiB7
Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gd3JhcHBpbmdTdHlsZTsKICAgICBpZiAoc2hvdWxk
QW5ub3RhdGUpIHsKLSAgICAgICAgd3JhcHBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRl
KGNvbnRleHQsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAg
ICAgIGF1dG8gd3JhcHBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVk
aXRpbmdTdHlsZTo6RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAKICAgICAgICAgLy8gU3R5
bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRlIHNob3VsZCBvbmx5IGJlIHBsYWNl
ZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLAogICAgICAgICAvLyB0byBoZWxwIHVzIGRpZmZlcmVu
dGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1c2VyIGhhcyBhcHBsaWVkLgpA
QCAtMTE5OSwxMCArMTE5OCwxMCBAQCBQYXNzUmVmUHRyPEVkaXRpbmdTdHlsZT4gRWRpdGluZ1N0
eWxlOjp3cmFwcGluZ1N0eWxlRm9yU2VyaWFsaXphdGlvbihOb2RlKiBjb250ZQogICAgICAgICAv
LyBDYWxsIGNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzIGZpcnN0IG9yIG90aGVyd2lz
ZSBpdCdsbCBjb3B5IHRoZSB2YWx1ZSBvdmVyIGZyb20gaW4tZWZmZWN0IHRvIHRleHQtZGVjb3Jh
dGlvbnMuCiAgICAgICAgIHdyYXBwaW5nU3R5bGUtPmNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9w
ZXJ0aWVzKCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gd3JhcHBpbmdTdHlsZS5yZWxlYXNl
KCk7CisgICAgICAgIHJldHVybiB3cmFwcGluZ1N0eWxlOwogICAgIH0KIAotICAgIHdyYXBwaW5n
U3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOworICAgIGF1dG8gd3JhcHBpbmdTdHlsZSA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CiAKICAgICAvLyBXaGVuIG5vdCBhbm5vdGF0aW5nIGZv
ciBpbnRlcmNoYW5nZSwgd2Ugb25seSBwcmVzZXJ2ZSBpbmxpbmUgc3R5bGUgZGVjbGFyYXRpb25z
LgogICAgIGZvciAoTm9kZSogbm9kZSA9IGNvbnRleHQ7IG5vZGUgJiYgIW5vZGUtPmlzRG9jdW1l
bnROb2RlKCk7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKQEAgLTEyMTIsNyArMTIxMSw3
IEBAIFBhc3NSZWZQdHI8RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5bGU6OndyYXBwaW5nU3R5bGVG
b3JTZXJpYWxpemF0aW9uKE5vZGUqIGNvbnRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1
cm4gd3JhcHBpbmdTdHlsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHdyYXBwaW5nU3R5bGU7CiB9
CiAKIApAQCAtMTI2NSwxNSArMTI2NCwxNSBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHls
ZShjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlLCBDU1NQcm9wZXJ0eU92ZXJyaWRlTQogICAg
IG1fZm9udFNpemVEZWx0YSArPSBvbGRGb250U2l6ZURlbHRhOwogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVt
ZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQorc3RhdGljIFJl
ZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewotICAgIFJlZlB0
cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVh
dGUoKTsKICAgICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogZWxlbWVudC0+c3R5bGVSZXNvbHZl
cigpLnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHJ1bGVzVG9JbmNsdWRlKSkgewogICAg
ICAgICBpZiAobWF0Y2hlZFJ1bGUtPmlzU3R5bGVSdWxlKCkpCiAgICAgICAgICAgICBzdHlsZS0+
bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3Qoc3RhdGljX3BvaW50ZXJfY2FzdDxTdHlsZVJ1bGU+
KG1hdGNoZWRSdWxlKS0+cHJvcGVydGllcygpKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHN0
eWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3R5bGU7CiB9CiAKIHZvaWQgRWRpdGluZ1N0eWxl
OjptZXJnZVN0eWxlRnJvbVJ1bGVzKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCkBAIC0xNzczLDMw
ICsxNzcyLDMxIEBAIHN0YXRpYyBib29sIGZvbnRXZWlnaHRJc0JvbGQoVCYgc3R5bGUpCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgUGFzc1JlZlB0cjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBleHRyYWN0UHJvcGVydGllc05vdEluKFN0eWxlUHJvcGVydGllcyYgc3R5bGVXaXRo
UmVkdW5kYW50UHJvcGVydGllcywgVCYgYmFzZVN0eWxlKQorc3RhdGljIFJlZjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBleHRyYWN0UHJvcGVydGllc05vdEluKFN0eWxlUHJvcGVydGllcyYgc3R5
bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywgVCYgYmFzZVN0eWxlKQogewogICAgIFJlZlB0cjxF
ZGl0aW5nU3R5bGU+IHJlc3VsdCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhSZWR1
bmRhbnRQcm9wZXJ0aWVzKTsKICAgICByZXN1bHQtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVz
KGJhc2VTdHlsZSk7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVT
dHlsZSA9IHJlc3VsdC0+c3R5bGUoKTsKKyAgICBBU1NFUlQocmVzdWx0LT5zdHlsZSgpKTsKKyAg
ICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gbXV0YWJsZVN0eWxlID0gKnJlc3VsdC0+c3R5
bGUoKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0
ID0gZXh0cmFjdFByb3BlcnR5VmFsdWUoYmFzZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KTsKLSAgICBkaWZmVGV4dERlY29yYXRpb25zKCptdXRhYmxlU3R5
bGUsIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIGJhc2VUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dC5nZXQoKSk7Ci0gICAgZGlmZlRleHREZWNvcmF0aW9ucygqbXV0YWJsZVN0eWxlLCBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCBiYXNlVGV4dERlY29yYXRpb25zSW5F
ZmZlY3QuZ2V0KCkpOworICAgIGRpZmZUZXh0RGVjb3JhdGlvbnMobXV0YWJsZVN0eWxlLCBDU1NQ
cm9wZXJ0eVRleHREZWNvcmF0aW9uLCBiYXNlVGV4dERlY29yYXRpb25zSW5FZmZlY3QuZ2V0KCkp
OworICAgIGRpZmZUZXh0RGVjb3JhdGlvbnMobXV0YWJsZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtp
dFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCBiYXNlVGV4dERlY29yYXRpb25zSW5FZmZlY3QuZ2V0
KCkpOwogCi0gICAgaWYgKGV4dHJhY3RQcm9wZXJ0eVZhbHVlKGJhc2VTdHlsZSwgQ1NTUHJvcGVy
dHlGb250V2VpZ2h0KSAmJiBmb250V2VpZ2h0SXNCb2xkKCptdXRhYmxlU3R5bGUpID09IGZvbnRX
ZWlnaHRJc0JvbGQoYmFzZVN0eWxlKSkKKyAgICBpZiAoZXh0cmFjdFByb3BlcnR5VmFsdWUoYmFz
ZVN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpICYmIGZvbnRXZWlnaHRJc0JvbGQobXV0YWJs
ZVN0eWxlKSA9PSBmb250V2VpZ2h0SXNCb2xkKGJhc2VTdHlsZSkpCiAgICAgICAgIG11dGFibGVT
dHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0KTsKIAotICAgIGlmIChl
eHRyYWN0UHJvcGVydHlWYWx1ZShiYXNlU3R5bGUsIENTU1Byb3BlcnR5Q29sb3IpICYmIHRleHRD
b2xvckZyb21TdHlsZSgqbXV0YWJsZVN0eWxlKSA9PSB0ZXh0Q29sb3JGcm9tU3R5bGUoYmFzZVN0
eWxlKSkKKyAgICBpZiAoZXh0cmFjdFByb3BlcnR5VmFsdWUoYmFzZVN0eWxlLCBDU1NQcm9wZXJ0
eUNvbG9yKSAmJiB0ZXh0Q29sb3JGcm9tU3R5bGUobXV0YWJsZVN0eWxlKSA9PSB0ZXh0Q29sb3JG
cm9tU3R5bGUoYmFzZVN0eWxlKSkKICAgICAgICAgbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUNvbG9yKTsKIAogICAgIGlmIChleHRyYWN0UHJvcGVydHlWYWx1ZShiYXNl
U3R5bGUsIENTU1Byb3BlcnR5VGV4dEFsaWduKQotICAgICAgICAmJiB0ZXh0QWxpZ25SZXNvbHZp
bmdTdGFydEFuZEVuZCgqbXV0YWJsZVN0eWxlKSA9PSB0ZXh0QWxpZ25SZXNvbHZpbmdTdGFydEFu
ZEVuZChiYXNlU3R5bGUpKQorICAgICAgICAmJiB0ZXh0QWxpZ25SZXNvbHZpbmdTdGFydEFuZEVu
ZChtdXRhYmxlU3R5bGUpID09IHRleHRBbGlnblJlc29sdmluZ1N0YXJ0QW5kRW5kKGJhc2VTdHls
ZSkpCiAgICAgICAgIG11dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0
QWxpZ24pOwogCi0gICAgaWYgKGV4dHJhY3RQcm9wZXJ0eVZhbHVlKGJhc2VTdHlsZSwgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpICYmIGJhY2tncm91bmRDb2xvckZyb21TdHlsZSgqbXV0YWJs
ZVN0eWxlKSA9PSBiYWNrZ3JvdW5kQ29sb3JGcm9tU3R5bGUoYmFzZVN0eWxlKSkKKyAgICBpZiAo
ZXh0cmFjdFByb3BlcnR5VmFsdWUoYmFzZVN0eWxlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cikgJiYgYmFja2dyb3VuZENvbG9yRnJvbVN0eWxlKG11dGFibGVTdHlsZSkgPT0gYmFja2dyb3Vu
ZENvbG9yRnJvbVN0eWxlKGJhc2VTdHlsZSkpCiAgICAgICAgIG11dGFibGVTdHlsZS0+cmVtb3Zl
UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCi0gICAgcmV0dXJuIG11dGFi
bGVTdHlsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG11dGFibGVTdHlsZTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KQEAgLTE4NDksMTUgKzE4NDksMTUgQEAgYm9vbCBoYXNUcmFuc3BhcmVu
dEJhY2tncm91bmRDb2xvcihTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQogICAgIHJldHVybiBpc1Ry
YW5zcGFyZW50Q29sb3JWYWx1ZShjc3NWYWx1ZS5nZXQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NT
VmFsdWU+IGJhY2tncm91bmRDb2xvckluRWZmZWN0KE5vZGUqIG5vZGUpCitSZWZQdHI8Q1NTVmFs
dWU+IGJhY2tncm91bmRDb2xvckluRWZmZWN0KE5vZGUqIG5vZGUpCiB7CiAgICAgZm9yIChOb2Rl
KiBhbmNlc3RvciA9IG5vZGU7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRO
b2RlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yKGFuY2VzdG9yKS5wcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKSkgewogICAgICAgICAgICAgaWYgKCFpc1RyYW5zcGFyZW50Q29sb3JWYWx1ZSh2YWx1
ZS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5oCmluZGV4IGY0ZDIwODUzOGYyNjIwYTFlYzZjZGM0NzAwYWUwODRmN2M2MjE3NzUuLjdj
MmM5MjJhMzYxOGJhNjk2ZTNjOTczNTljOTdmYzI1YmI0ZWE3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nU3R5bGUuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IG1lcmdlVHlwaW5nU3R5bGUoRG9jdW1lbnQmKTsKICAgICBlbnVtIENTU1Byb3BlcnR5T3ZlcnJp
ZGVNb2RlIHsgT3ZlcnJpZGVWYWx1ZXMsIERvTm90T3ZlcnJpZGVWYWx1ZXMgfTsKICAgICB2b2lk
IG1lcmdlSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCosIENTU1Byb3BlcnR5T3Zl
cnJpZGVNb2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlID0gQWxsUHJvcGVydGllcyk7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8RWRpdGluZ1N0eWxlPiB3cmFwcGluZ1N0eWxlRm9yU2VyaWFsaXphdGlv
bihOb2RlKiBjb250ZXh0LCBib29sIHNob3VsZEFubm90YXRlKTsKKyAgICBzdGF0aWMgUmVmPEVk
aXRpbmdTdHlsZT4gd3JhcHBpbmdTdHlsZUZvclNlcmlhbGl6YXRpb24oTm9kZSogY29udGV4dCwg
Ym9vbCBzaG91bGRBbm5vdGF0ZSk7CiAgICAgdm9pZCBtZXJnZVN0eWxlRnJvbVJ1bGVzKFN0eWxl
ZEVsZW1lbnQqKTsKICAgICB2b2lkIG1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9u
KFN0eWxlZEVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4
dChTdHlsZWRFbGVtZW50KiwgTm9kZSogY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggNjJkMDZmOWU2YjYzY2Y5OTY2MzM0YmMxMWFkNWRhNmJjYWE5NDc4Zi4uOGQwNDU3
YTg3ZGY0OWU2MzA2ODE0YjU5YmJiMzI3MjM0MGMyMTI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtNzk5LDM0ICs3OTksMzQgQEAgYm9vbCBFZGl0b3I6OmNhbkRlY3JlYXNlU2Vs
ZWN0aW9uTGlzdExldmVsKCkKICAgICByZXR1cm4gY2FuRWRpdFJpY2hseSgpICYmIERlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6Y2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwo
JmRvY3VtZW50KCkpOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IEVkaXRvcjo6aW5jcmVhc2VTZWxl
Y3Rpb25MaXN0TGV2ZWwoKQorUmVmUHRyPE5vZGU+IEVkaXRvcjo6aW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWwoKQogewogICAgIGlmICghY2FuRWRpdFJpY2hseSgpIHx8IG1fZnJhbWUuc2VsZWN0
aW9uKCkuaXNOb25lKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKICAgICBSZWZQdHI8Tm9kZT4gbmV3TGlzdCA9IEluY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsQ29tbWFuZDo6aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoJmRvY3VtZW50KCkpOwog
ICAgIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHJldHVybiBu
ZXdMaXN0OwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IEVkaXRvcjo6aW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxPcmRlcmVkKCkKK1JlZlB0cjxOb2RlPiBFZGl0b3I6OmluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsT3JkZXJlZCgpCiB7CiAgICAgaWYgKCFjYW5FZGl0UmljaGx5KCkgfHwgbV9mcmFt
ZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIAogICAgIFJlZlB0cjxOb2RlPiBuZXdMaXN0ID0gSW5jcmVhc2VTZWxl
Y3Rpb25MaXN0TGV2ZWxDb21tYW5kOjppbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbE9yZGVyZWQo
JmRvY3VtZW50KCkpOwogICAgIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigp
OwotICAgIHJldHVybiBuZXdMaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3TGlzdDsKIH0K
IAotUGFzc1JlZlB0cjxOb2RlPiBFZGl0b3I6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5v
cmRlcmVkKCkKK1JlZlB0cjxOb2RlPiBFZGl0b3I6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVs
VW5vcmRlcmVkKCkKIHsKICAgICBpZiAoIWNhbkVkaXRSaWNobHkoKSB8fCBtX2ZyYW1lLnNlbGVj
dGlvbigpLmlzTm9uZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCiAgICAgUmVmUHRyPE5vZGU+IG5ld0xpc3QgPSBJbmNyZWFzZVNlbGVjdGlvbkxp
c3RMZXZlbENvbW1hbmQ6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkKCZkb2N1
bWVudCgpKTsKICAgICByZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oKTsKLSAg
ICByZXR1cm4gbmV3TGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ld0xpc3Q7CiB9CiAKIHZv
aWQgRWRpdG9yOjpkZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpCkBAIC0zMTM4LDIyICszMTM4
LDIyIEBAIGJvb2wgRWRpdG9yOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5k
T3B0aW9ucyBvcHRpb25zKQogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPFJhbmdl
PiBFZGl0b3I6OmZpbmRTdHJpbmdBbmRTY3JvbGxUb1Zpc2libGUoY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIFJhbmdlKiBwcmV2aW91c01hdGNoLCBGaW5kT3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPFJh
bmdlPiBFZGl0b3I6OmZpbmRTdHJpbmdBbmRTY3JvbGxUb1Zpc2libGUoY29uc3QgU3RyaW5nJiB0
YXJnZXQsIFJhbmdlKiBwcmV2aW91c01hdGNoLCBGaW5kT3B0aW9ucyBvcHRpb25zKQogewogICAg
IFJlZlB0cjxSYW5nZT4gbmV4dE1hdGNoID0gcmFuZ2VPZlN0cmluZyh0YXJnZXQsIHByZXZpb3Vz
TWF0Y2gsIG9wdGlvbnMpOwogICAgIGlmICghbmV4dE1hdGNoKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBuZXh0TWF0Y2gtPmZpcnN0Tm9kZSgpLT5y
ZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKG5leHRNYXRjaC0+YWJzb2x1dGVCb3VuZGlu
Z0JveCgpLAogICAgICAgICBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNj
cm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCk7CiAKLSAgICByZXR1cm4gbmV4dE1h
dGNoLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV4dE1hdGNoOwogfQogCi1QYXNzUmVmUHRyPFJh
bmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFJhbmdlKiBy
ZWZlcmVuY2VSYW5nZSwgRmluZE9wdGlvbnMgb3B0aW9ucykKK1JlZlB0cjxSYW5nZT4gRWRpdG9y
OjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNlUmFu
Z2UsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKHRhcmdldC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFN0YXJ0
IGZyb20gYW4gZWRnZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlLCBpZiB0aGVyZSdzIGEgcmVmZXJl
bmNlIHJhbmdlIHRoYXQncyBub3QgaW4gc2hhZG93IGNvbnRlbnQuIFdoaWNoIGVkZ2UKICAgICAv
LyBpcyB1c2VkIGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBzZWFyY2hpbmcgZm9yd2FyZCBvciBi
YWNrd2FyZCwgYW5kIHdoZXRoZXIgc3RhcnRJblNlbGVjdGlvbiBpcyBzZXQuCkBAIC0zMTc2LDcg
KzMxNzYsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0YXJnZXQsIFJhbmdlKiByZWZlcmVuY2VSYQogICAgICAgICAgICAgc2VhcmNoUmFu
Z2UtPnNldFN0YXJ0KCpzaGFkb3dUcmVlUm9vdCwgMCk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJh
bmdlPiByZXN1bHRSYW5nZShmaW5kUGxhaW5UZXh0KCpzZWFyY2hSYW5nZSwgdGFyZ2V0LCBvcHRp
b25zKSk7CisgICAgUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IGZpbmRQbGFpblRleHQoKnNl
YXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMpOwogICAgIC8vIElmIHdlIHN0YXJ0ZWQgaW4gdGhl
IHJlZmVyZW5jZSByYW5nZSBhbmQgdGhlIGZvdW5kIHJhbmdlIGV4YWN0bHkgbWF0Y2hlcyB0aGUg
cmVmZXJlbmNlIHJhbmdlLCBmaW5kIGFnYWluLgogICAgIC8vIEJ1aWxkIGEgc2VsZWN0aW9uIHdp
dGggdGhlIGZvdW5kIHJhbmdlIHRvIHJlbW92ZSBjb2xsYXBzZWQgd2hpdGVzcGFjZS4KICAgICAv
LyBDb21wYXJlIHJhbmdlcyBpbnN0ZWFkIG9mIHNlbGVjdGlvbiBvYmplY3RzIHRvIGlnbm9yZSB0
aGUgd2F5IHRoYXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHdhcyBtYWRlLgpAQCAtMzIyMCw3ICsz
MjIwLDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNlUmEKICAgICAgICAgLy8gdGhpcyBzaG91bGQg
YmUgYSBzdWNjZXNzIGNhc2UgaW5zdGVhZCwgc28gd2UnbGwganVzdCBmYWxsIHRocm91Z2ggaW4g
dGhhdCBjYXNlLgogICAgIH0KIAotICAgIHJldHVybiByZXN1bHRSYW5nZS0+Y29sbGFwc2VkKCkg
PyBudWxscHRyIDogcmVzdWx0UmFuZ2UucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHRSYW5n
ZS0+Y29sbGFwc2VkKCkgPyBudWxscHRyIDogcmVzdWx0UmFuZ2U7CiB9CiAKIHN0YXRpYyBib29s
IGlzRnJhbWVJblJhbmdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UqIHJhbmdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKaW5kZXggODViMmI0YzQyYWJhY2YxOTY5NjlmNjNmOWM4YzA2MWFjYmE4NjkwZi4u
OWVhYWQ0NWU3YjBjZTc0YjkyNjQyYTY1YzQwMTE2YjAzZjA4MmZiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCkBAIC0xNjQsOSArMTY0LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IFBhc3NSZWZQdHI8Tm9kZT4gaW5zZXJ0VW5vcmRlcmVkTGlzdCgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNhbkRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgUGFzc1JlZlB0cjxOb2RlPiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8Tm9kZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWxPcmRlcmVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxOb2RlPiBpbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxOb2RlPiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxOb2RlPiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbE9yZGVyZWQoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8Tm9kZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9y
ZGVyZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlY3JlYXNlU2VsZWN0aW9uTGlzdExl
dmVsKCk7CiAgICAKICAgICB2b2lkIHJlbW92ZUZvcm1hdHRpbmdBbmRTdHlsZSgpOwpAQCAtMzY0
LDggKzM2NCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5z
ZmVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zKTsKIAotICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZTdHJp
bmcoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBGaW5kT3B0aW9ucyk7Ci0gICAgUGFzc1JlZlB0cjxS
YW5nZT4gZmluZFN0cmluZ0FuZFNjcm9sbFRvVmlzaWJsZShjb25zdCBTdHJpbmcmLCBSYW5nZSos
IEZpbmRPcHRpb25zKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgUmFuZ2UqLCBGaW5kT3B0aW9ucyk7CisgICAgUmVmUHRyPFJhbmdlPiBmaW5kU3RyaW5n
QW5kU2Nyb2xsVG9WaXNpYmxlKGNvbnN0IFN0cmluZyYsIFJhbmdlKiwgRmluZE9wdGlvbnMpOwog
CiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbWFyaygpIGNvbnN0OyAvLyBNYXJrLCB0byBi
ZSB1c2VkIGFzIGVtYWNzIHVzZXMgaXQuCiAgICAgdm9pZCBzZXRNYXJrKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IDE1MDMyMjkyYWRlNjU4ODQ0YTdm
OTIwNmNmYWI3MDlmYjU2NDEwY2YuLjVhNTFjMzU3YWYwM2M0MmZjOTE5OGVlNzYwMjY5ZWJkMWY4
ZmRhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAtMTMxLDE5ICsxMzEsMTkgQEAgdm9pZCBJ
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpnZXRBbmNlc3RvcnNJbnNpZGVCbG9jayhj
b25zdCBOb2RlKiBpbnNlcnQKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6Y2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKGNv
bnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+JiBhbmNlc3RvcnMsIFBhc3NSZWZQdHI8RWxlbWVu
dD4gYmxvY2tUb0luc2VydCkKK1JlZlB0cjxFbGVtZW50PiBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JDb21tYW5kOjpjbG9uZUhpZXJhcmNoeVVuZGVyTmV3QmxvY2soY29uc3QgVmVjdG9yPFJlZlB0
cjxFbGVtZW50Pj4mIGFuY2VzdG9ycywgUGFzc1JlZlB0cjxFbGVtZW50PiBibG9ja1RvSW5zZXJ0
KQogewogICAgIC8vIE1ha2UgY2xvbmVzIG9mIGFuY2VzdG9ycyBpbiBiZXR3ZWVuIHRoZSBzdGFy
dCBub2RlIGFuZCB0aGUgc3RhcnQgYmxvY2suCiAgICAgUmVmUHRyPEVsZW1lbnQ+IHBhcmVudCA9
IGJsb2NrVG9JbnNlcnQ7CiAgICAgZm9yIChzaXplX3QgaSA9IGFuY2VzdG9ycy5zaXplKCk7IGkg
IT0gMDsgLS1pKSB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBjaGlsZCA9IGFuY2VzdG9yc1tp
IC0gMV0tPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbihkb2N1bWVudCgpKTsKKyAgICAgICAg
YXV0byBjaGlsZCA9IGFuY2VzdG9yc1tpIC0gMV0tPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJl
bihkb2N1bWVudCgpKTsKICAgICAgICAgLy8gSXQgc2hvdWxkIGFsd2F5cyBiZSBva2F5IHRvIHJl
bW92ZSBpZCBmcm9tIHRoZSBjbG9uZWQgZWxlbWVudHMsIHNpbmNlIHRoZSBvcmlnaW5hbHMgYXJl
IG5vdCBkZWxldGVkLgogICAgICAgICBjaGlsZC0+cmVtb3ZlQXR0cmlidXRlKGlkQXR0cik7Ci0g
ICAgICAgIGFwcGVuZE5vZGUoY2hpbGQsIHBhcmVudCk7Ci0gICAgICAgIHBhcmVudCA9IGNoaWxk
LnJlbGVhc2UoKTsKKyAgICAgICAgYXBwZW5kTm9kZShjaGlsZC5wdHIoKSwgcGFyZW50KTsKKyAg
ICAgICAgcGFyZW50ID0gV1RGTW92ZShjaGlsZCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBw
YXJlbnQucmVsZWFzZSgpOworICAgIHJldHVybiBwYXJlbnQ7CiB9CiAKIHZvaWQgSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oCmluZGV4IDY3
MzQxOWUxOTBmNTE1ZWI1NjMzODJkMTNmY2M3OWRmOWE4OTA4ZjIuLjg3NTc2ZWVkNDlhNzdkOTFh
NWQ3MWUzMDNlMmNhZTkxMzA4NjdiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYWxjdWxhdGVTdHlsZUJlZm9yZUluc2VydGlvbihjb25z
dCBQb3NpdGlvbiYpOwogICAgIHZvaWQgYXBwbHlTdHlsZUFmdGVySW5zZXJ0aW9uKE5vZGUqIG9y
aWdpbmFsRW5jbG9zaW5nQmxvY2spOwogICAgIHZvaWQgZ2V0QW5jZXN0b3JzSW5zaWRlQmxvY2so
Y29uc3QgTm9kZSogaW5zZXJ0aW9uTm9kZSwgRWxlbWVudCogb3V0ZXJCbG9jaywgVmVjdG9yPFJl
ZlB0cjxFbGVtZW50Pj4mIGFuY2VzdG9ycyk7Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9u
ZUhpZXJhcmNoeVVuZGVyTmV3QmxvY2soY29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4mIGFu
Y2VzdG9ycywgUGFzc1JlZlB0cjxFbGVtZW50PiBibG9ja1RvSW5zZXJ0KTsKKyAgICBSZWZQdHI8
RWxlbWVudD4gY2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKGNvbnN0IFZlY3RvcjxSZWZQdHI8
RWxlbWVudD4+JiBhbmNlc3RvcnMsIFBhc3NSZWZQdHI8RWxlbWVudD4gYmxvY2tUb0luc2VydCk7
CiAKICAgICBib29sIHNob3VsZFVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KE5vZGUqKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVs
ZW1lbnRzQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2Fs
RWxlbWVudHNDb21tYW5kLmNwcAppbmRleCA2ZDRkNzQ1Y2VlMDAwZGE0ZjBiMDljOWMyOWRjMmJh
MmE3Y2Q5OTI1Li4xZGIzMGY3M2I2NWNjNDA2YTdhM2FhYTQzYzU0ZTkwODM2ZTEzZTExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVu
dHNDb21tYW5kLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVu
dHNDb21tYW5kOjpkb1VuYXBwbHkoKQogICAgIEFTU0VSVChtX2VsZW1lbnQxKTsKICAgICBBU1NF
UlQobV9lbGVtZW50Mik7CiAKLSAgICBSZWZQdHI8Tm9kZT4gYXRDaGlsZCA9IG1fYXRDaGlsZC5y
ZWxlYXNlKCk7CisgICAgUmVmUHRyPE5vZGU+IGF0Q2hpbGQgPSBXVEZNb3ZlKG1fYXRDaGlsZCk7
CiAKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX2VsZW1lbnQyLT5wYXJlbnROb2RlKCk7
CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aGFzRWRpdGFibGVTdHlsZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwCmlu
ZGV4IDgzN2FiNjhlNmExNWQ5Y2M4YWE0MzJmMmQyZmJhMTY5ODkyMWFjMWQuLjM2YmIxYTdiOGM1
YTQ2NTc5ZDU1ZDU5NWQ4NTA5YjQyOTU4ZjgyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAKQEAgLTE5OCw3ICsxOTgsNyBA
QCB2b2lkIEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAg
ICAgIH0KICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShuZXdQYXJlbnQsIHN0YXJ0TGlzdENoaWxk
KTsKICAgICAgICAgYXBwZW5kU2libGluZ05vZGVSYW5nZShzdGFydExpc3RDaGlsZCwgZW5kTGlz
dENoaWxkLCBuZXdQYXJlbnQuZ2V0KCkpOwotICAgICAgICBtX2xpc3RFbGVtZW50ID0gbmV3UGFy
ZW50LnJlbGVhc2UoKTsKKyAgICAgICAgbV9saXN0RWxlbWVudCA9IFdURk1vdmUobmV3UGFyZW50
KTsKICAgICB9CiB9CiAKQEAgLTIwOSwxMyArMjA5LDEzIEBAIGJvb2wgSW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxDb21tYW5kOjpjYW5JbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbChEb2N1bWVu
dCoKICAgICByZXR1cm4gY2FuSW5jcmVhc2VMaXN0TGV2ZWwoZG9jdW1lbnQtPmZyYW1lKCktPnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLCBzdGFydExpc3RDaGlsZCwgZW5kTGlzdENoaWxkKTsKIH0K
IAotUGFzc1JlZlB0cjxOb2RlPiBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6Omlu
Y3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKERvY3VtZW50KiBkb2N1bWVudCwgVHlwZSB0eXBlKQor
UmVmUHRyPE5vZGU+IEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6aW5jcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1lbnQqIGRvY3VtZW50LCBUeXBlIHR5cGUpCiB7CiAgICAg
QVNTRVJUKGRvY3VtZW50KTsKICAgICBBU1NFUlQoZG9jdW1lbnQtPmZyYW1lKCkpOwotICAgIFJl
ZlB0cjxJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ+IGNvbW1hbmQgPSBjcmVhdGUo
KmRvY3VtZW50LCB0eXBlKTsKKyAgICBhdXRvIGNvbW1hbmQgPSBjcmVhdGUoKmRvY3VtZW50LCB0
eXBlKTsKICAgICBjb21tYW5kLT5hcHBseSgpOwotICAgIHJldHVybiBjb21tYW5kLT5tX2xpc3RF
bGVtZW50LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShjb21tYW5kLT5tX2xpc3RFbGVt
ZW50KTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlPiBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENv
bW1hbmQ6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKERvY3VtZW50KiBkb2N1bWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oCmlu
ZGV4IGVkNjk0Y2ExMGM5ZjUxYzhjNDU4YzlhOGUyNzI1ZjU4YzRmM2VhMzIuLjA5ODZmNWE3OTc0
NjFjOWRjMzIwMWRmNGQ0Mzk2NTcxNWJmMzc2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgZW51bSBUeXBlIHsgSW5oZXJpdGVkTGlzdFR5cGUsIE9yZGVy
ZWRMaXN0LCBVbm9yZGVyZWRMaXN0IH07Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZT4gaW5j
cmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1lbnQqLCBUeXBlKTsKKyAgICBzdGF0aWMgUmVm
UHRyPE5vZGU+IGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKERvY3VtZW50KiwgVHlwZSk7CiAK
ICAgICBzdGF0aWMgUmVmPEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZD4gY3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgVHlwZSB0eXBlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggYjNkZjE4NmRjYzYxYzE3YTdiODg4
ZjVhZDk0YWJlMWIxNTI4NWJhNi4uMDBlZGE0ODU1OWQ3OGE2MzVmNWU4YTAzYTQwZTRmN2RhM2Zh
N2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAK
QEAgLTU4LDggKzU4LDggQEAgdm9pZCBSZW1vdmVOb2RlQ29tbWFuZDo6ZG9BcHBseSgpCiAKIHZv
aWQgUmVtb3ZlTm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB7Ci0gICAgUmVmUHRyPENvbnRhaW5l
ck5vZGU+IHBhcmVudCA9IG1fcGFyZW50LnJlbGVhc2UoKTsKLSAgICBSZWZQdHI8Tm9kZT4gcmVm
Q2hpbGQgPSBtX3JlZkNoaWxkLnJlbGVhc2UoKTsKKyAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4g
cGFyZW50ID0gV1RGTW92ZShtX3BhcmVudCk7CisgICAgUmVmUHRyPE5vZGU+IHJlZkNoaWxkID0g
V1RGTW92ZShtX3JlZkNoaWxkKTsKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5oYXNFZGl0
YWJsZVN0eWxlKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNw
cAppbmRleCBjNjI5NzE2ZmVlYmNlMTdjY2UyZDNhY2RiMDNjOTYxYmQ1Y2NlMGRiLi5iNjFlMmZm
YWFjZTQyOTRhZDNkMjM2Y2IyY2Q2MjA0YTk3ZGZiY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21t
YW5kLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRy
ZW5Db21tYW5kOjpkb0FwcGx5KCkKIAogICAgIHNpemVfdCBzaXplID0gY2hpbGRyZW4uc2l6ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIFJlZlB0
cjxOb2RlPiBjaGlsZCA9IGNoaWxkcmVuW2ldLnJlbGVhc2UoKTsKKyAgICAgICAgUmVmUHRyPE5v
ZGU+IGNoaWxkID0gV1RGTW92ZShjaGlsZHJlbltpXSk7CiAgICAgICAgIHJlbW92ZU5vZGUoY2hp
bGQsIG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOwogICAgICAgICBpbnNl
cnROb2RlQmVmb3JlKGNoaWxkLnJlbGVhc2UoKSwgbV9ub2RlLCBtX3Nob3VsZEFzc3VtZUNvbnRl
bnRJc0Fsd2F5c0VkaXRhYmxlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGQxMmNjOTc0ODNlMzVkNmM0NTgy
MDY1NzMwOGM2YjI5NDJmNzM2NDUuLjA3MGZiODFmY2Q2YzMyZjViMzNlM2FiMmZmZGY4MGExZWNi
N2RmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU5v
ZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oUGFzc1JlZlB0cjxOb2RlPik7CiAKIHByaXZhdGU6Ci0gICAg
UGFzc1JlZlB0cjxTdHlsZWRFbGVtZW50PiBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmco
Tm9kZSogcm9vdEVkaXRhYmxlTm9kZSk7CisgICAgUmVmPEhUTUxFbGVtZW50PiBpbnNlcnRGcmFn
bWVudEZvclRlc3RSZW5kZXJpbmcoTm9kZSogcm9vdEVkaXRhYmxlTm9kZSk7CiAgICAgdm9pZCBy
ZW1vdmVVbnJlbmRlcmVkTm9kZXMoTm9kZSopOwogICAgIHZvaWQgcmVzdG9yZUFuZFJlbW92ZVRl
c3RSZW5kZXJpbmdOb2Rlc1RvRnJhZ21lbnQoU3R5bGVkRWxlbWVudCopOwogICAgIHZvaWQgcmVt
b3ZlSW50ZXJjaGFuZ2VOb2RlcyhOb2RlKik7CkBAIC0yNTIsMTUgKzI1MiwxNSBAQCB2b2lkIFJl
cGxhY2VtZW50RnJhZ21lbnQ6Omluc2VydE5vZGVCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBub2Rl
LCBOb2RlKiByZWZOb2RlKQogICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKCpub2RlLCByZWZOb2Rl
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZWRFbGVtZW50PiBS
ZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoTm9kZSog
cm9vdEVkaXRhYmxlRWxlbWVudCkKK1JlZjxIVE1MRWxlbWVudD4gUmVwbGFjZW1lbnRGcmFnbWVu
dDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKE5vZGUqIHJvb3RFZGl0YWJsZUVsZW1l
bnQpCiB7Ci0gICAgUmVmUHRyPFN0eWxlZEVsZW1lbnQ+IGhvbGRlciA9IGNyZWF0ZURlZmF1bHRQ
YXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KCkpOworICAgIGF1dG8gaG9sZGVyID0gY3JlYXRlRGVm
YXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQoKSk7CiAKICAgICBob2xkZXItPmFwcGVuZENo
aWxkKCptX2ZyYWdtZW50LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICByb290RWRpdGFibGVF
bGVtZW50LT5hcHBlbmRDaGlsZChob2xkZXIuZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwor
ICAgIHJvb3RFZGl0YWJsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGhvbGRlci5wdHIoKSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKIAotICAgIHJldHVybiBob2xkZXIucmVsZWFzZSgpOworICAgIHJldHVy
biBob2xkZXI7CiB9CiAKIHZvaWQgUmVwbGFjZW1lbnRGcmFnbWVudDo6cmVzdG9yZUFuZFJlbW92
ZVRlc3RSZW5kZXJpbmdOb2Rlc1RvRnJhZ21lbnQoU3R5bGVkRWxlbWVudCogaG9sZGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5j
cHAKaW5kZXggNDFkZmU2YmRjOWVhOWNiNjljYjA5NzkwYTg5ODIyOTJjOGVmODBkMi4uMjMyNWU3
N2M2Y2U3YTIzMGZiMjVhMjIxMjNkZTI1NWNkNzc4MWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xMDEsMTYg
KzEwMSwxNCBAQCB2b2lkIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAg
IGlmICghbV9yYW5nZVRvQmVDb3JyZWN0ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoKm1f
cmFuZ2VUb0JlQ29ycmVjdGVkLCBtX2NvcnJlY3Rpb24pOwotICAgIGlmICghZnJhZ21lbnQpCi0g
ICAgICAgIHJldHVybjsKKyAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4
dCgqbV9yYW5nZVRvQmVDb3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CiAKICAgICBhcHBseUNvbW1h
bmRUb0NvbXBvc2l0ZShTZXRTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUobV9zZWxlY3Rpb25Ub0Jl
Q29ycmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8
IEZyYW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQpKTsKICNpZiBVU0UoQVVU
T0NPUlJFQ1RJT05fUEFORUwpCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoU3BlbGxpbmdD
b3JyZWN0aW9uUmVjb3JkVW5kb0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBtX2NvcnJlY3Rl
ZCwgbV9jb3JyZWN0aW9uKSk7CiAjZW5kaWYKIAotICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRl
KFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgZnJhZ21lbnQucmVs
ZWFzZSgpLCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZSwgRWRpdEFjdGlvblBh
c3RlKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKGZyYWdtZW50KSwgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6Ok1hdGNoU3R5bGUsIEVkaXRBY3Rpb25QYXN0ZSkpOwogfQogCiBib29sIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQ6OnNob3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9y
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25h
cnlMb29rdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAu
aAppbmRleCA5ODJkYWMzNGQxOGQwY2Q2ZWQzYTU1ZTNlNzRlYjMxZWVhZGViYTkyLi4yN2QxMDRi
NzI4MmVjMDI4N2RkZjU1NjQ2ZjYyZTJlMTc0MmZlMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oCkBAIC01Miw4ICs1Miw4IEBAIGNsYXNzIFZp
c2libGVTZWxlY3Rpb247CiAKIGNsYXNzIERpY3Rpb25hcnlMb29rdXAgewogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvclNlbGVjdGlv
bihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucyk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlQXRIaXRUZXN0UmVz
dWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucyk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBOU1N0cmluZyAqc3RyaW5nRm9yUERGU2VsZWN0aW9uKFBERlNlbGVjdGlvbiAq
LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgbW92ZS91
bmlmeSBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UgaGVyZSB0b28uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbQppbmRleCAxYTljMWI3ZjJlNzk4
ZjgxNzMwY2IxYmI4NzA2MDMyYTA1ZjAxMmM2Li4yMTU3NTZlM2JjZjA2ODFhYjQ3YTA2Y2Y4NmE2
M2YzYTE0NmM4NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0
aW9uYXJ5TG9va3VwLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25h
cnlMb29rdXAubW0KQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIGJvb2wgc2VsZWN0aW9uQ29udGFp
bnNQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBWaXMKICAg
ICByZXR1cm4gc2VsZWN0ZWRSYW5nZS0+Y29udGFpbnMocG9zaXRpb24pOwogfQogCi1QYXNzUmVm
UHRyPFJhbmdlPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCitSZWZQdHI8
UmFuZ2U+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKIHsKICAgICBSZWZQ
dHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsK
ICAgICBpZiAoIXNlbGVjdGVkUmFuZ2UpCkBAIC05MCwxMCArOTAsMTAgQEAgUGFzc1JlZlB0cjxS
YW5nZT4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2UKICAgICAgICAgW2x1TG9va3VwRGVmaW5pdGlvbk1vZHVsZSB0b2tlblJhbmdl
Rm9yU3RyaW5nOmZ1bGxQbGFpblRleHRTdHJpbmcgcmFuZ2U6cmFuZ2VUb1Bhc3Mgb3B0aW9uczpv
cHRpb25zXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgcmV0dXJuIHNl
bGVjdGVkUmFuZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBzZWxlY3RlZFJhbmdlOwogfQogCi1Q
YXNzUmVmUHRyPFJhbmdlPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChj
b25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0LCBOU0RpY3Rpb25hcnkgKipvcHRpb25z
KQorUmVmUHRyPFJhbmdlPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChj
b25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0LCBOU0RpY3Rpb25hcnkgKipvcHRpb25z
KQogewogICAgIE5vZGUqIG5vZGUgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgp
OwogICAgIGlmICghbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApp
bmRleCAwYTQ2ZWI3ODYzMzdhYTYxMDkxNDg5Y2FlYzBhNmE2MTgxODg3OTE5Li44Y2VjZDJlM2I0
OTQ2ZDVhNzY3ZWIwNTFlNjJmZjg5ZmZjMzcwNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6
OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoQXV0b2NvbXBsZXRlUmVzdWx0IHJlc3VsdCkKICAg
ICB9CiAKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwotICAgIG1fcGVuZGluZ0F1dG9jb21w
bGV0ZUV2ZW50cy5hcHBlbmQoZXZlbnQucmVsZWFzZSgpKTsKKyAgICBtX3BlbmRpbmdBdXRvY29t
cGxldGVFdmVudHMuYXBwZW5kKFdURk1vdmUoZXZlbnQpKTsKIAogICAgIC8vIERpc3BhdGNoIGV2
ZW50cyBsYXRlciBhcyB0aGlzIEFQSSBpcyBtZWFudCB0byB3b3JrIGFzeW5jaHJvbm91c2x5IGlu
IGFsbCBzaXR1YXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbnMuCiAgICAgaWYgKCFtX3JlcXVlc3RB
dXRvY29tcGxldGVUaW1lci5pc0FjdGl2ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggMGI3ZWNkOWE1MDg0NGE4Y2U3YjE0NGJiODc0MWUwYjEzOTNjYzJh
NS4uMzAwY2Y2YWMyZjczMTZlNjU4OTkzNGZiZWY2ZDhlNzliYzcxMTU2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05MDAsNyArOTAwLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRO
YW1lKQogICAgIC8vIERvbid0IHNldCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZlbnQgcXVldWUg
d2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5kIHNldHRpbmcg
aXQgaGVyZQogICAgIC8vIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBlbGVtZW50IGhh
cyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24uCiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1
ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVl
RXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBlbmRp
bmdBY3Rpb25UaW1lckZpcmVkKCkKQEAgLTE2MTksMTEgKzE2MTksMTEgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92
aWVUaW1lKQogICAgICAgICBpZiAoZXZlbnRUYXNrc1tpXS5zZWNvbmQtPnN0YXJ0VGltZSgpID49
IGV2ZW50VGFza3NbaV0uc2Vjb25kLT5lbmRUaW1lKCkpIHsKICAgICAgICAgICAgIGV2ZW50ID0g
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJFdmVudCwgZmFsc2UsIGZhbHNlKTsKICAg
ICAgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrc1tpXS5zZWNvbmQpOwotICAgICAg
ICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7Cisg
ICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkp
OwogCiAgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmV4aXRF
dmVudCwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoZXZlbnRU
YXNrc1tpXS5zZWNvbmQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2
ZW50KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
aWYgKGV2ZW50VGFza3NbaV0uZmlyc3QgPT0gZXZlbnRUYXNrc1tpXS5zZWNvbmQtPnN0YXJ0TWVk
aWFUaW1lKCkpCiAgICAgICAgICAgICAgICAgZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5lbnRlckV2ZW50LCBmYWxzZSwgZmFsc2UpOwpAQCAtMTYzMSw3ICsxNjMxLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlh
VGltZSYgbW92aWVUaW1lKQogICAgICAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuZXhpdEV2ZW50LCBmYWxzZSwgZmFsc2UpOwogCiAgICAgICAgICAgICBldmVu
dC0+c2V0VGFyZ2V0KGV2ZW50VGFza3NbaV0uc2Vjb25kKTsKLSAgICAgICAgICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOworICAgICAgICAgICAgbV9h
c3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgICAg
ICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY3VlY2hh
bmdlRXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoYWZmZWN0
ZWRUcmFja3NbaV0pOwogCi0gICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChl
dmVudC5yZWxlYXNlKCkpOworICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShldmVudCkpOwogCiAgICAgICAgIC8vIC4uLiBpZiB0aGUgdGV4dCB0cmFjayBoYXMg
YSBjb3JyZXNwb25kaW5nIHRyYWNrIGVsZW1lbnQsIHRvIHRoZW4gZmlyZSBhCiAgICAgICAgIC8v
IHNpbXBsZSBldmVudCBuYW1lZCBjdWVjaGFuZ2UgYXQgdGhlIHRyYWNrIGVsZW1lbnQgYXMgd2Vs
bC4KQEAgLTE2NTUsNyArMTY1NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0
aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICAgICAgICAg
IEFTU0VSVCh0cmFja0VsZW1lbnQpOwogICAgICAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0cmFj
a0VsZW1lbnQpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5l
bnF1ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1
ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTIzNTMsOSArMjM1Myw5IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNZWRpYUtleU5lZWRl
ZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEp
OworICAgIGF1dG8gZXZlbnQgPSBNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQo
dGhpcyk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2Uo
KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsK
IAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzYwNSw3ICszNjA1LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpmb3JnZXRSZXNvdXJjZVNwZWNpZmljVHJhY2tzKCkKICAgICAgICAgcmVtb3Zl
VmlkZW9UcmFjayhtX3ZpZGVvVHJhY2tzLT5sYXN0SXRlbSgpKTsKIH0KIAotUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRy
YWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gNC44LjEwLjEyLjQgVGV4
dCB0cmFjayBBUEkKICAgICAvLyBUaGUgYWRkVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBsYW5ndWFn
ZSkgbWV0aG9kIG9mIG1lZGlhIGVsZW1lbnRzLCB3aGVuIGludm9rZWQsIG11c3QgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6CkBAIC0zNjEzLDcgKzM2MTMsNyBAQCBQYXNzUmVmUHRyPFRleHRUcmFj
az4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgUwogICAgIC8vIDEuIElmIGtpbmQgaXMgbm90IG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmlu
Z3MsIHRoZW4gdGhyb3cgYSBTeW50YXhFcnJvciBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0
ZXBzCiAgICAgaWYgKCFUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChraW5kKSkgewogICAg
ICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAogICAgIC8vIDIuIElmIHRoZSBsYWJlbCBhcmd1bWVudCB3YXMgb21p
dHRlZCwgbGV0IGxhYmVsIGJlIHRoZSBlbXB0eSBzdHJpbmcuCkBAIC0zNjIyLDEzICszNjIyLDEz
IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2so
Y29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTCiAKICAgICAvLyA1LiBDcmVhdGUgYSBuZXcgdGV4
dCB0cmFjayBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXcgb2JqZWN0LCBhbmQgc2V0IGl0cyB0ZXh0
IHRyYWNrIGtpbmQgdG8ga2luZCwgaXRzIHRleHQgCiAgICAgLy8gdHJhY2sgbGFiZWwgdG8gbGFi
ZWwsIGl0cyB0ZXh0IHRyYWNrIGxhbmd1YWdlIHRvIGxhbmd1YWdlLi4uCi0gICAgUmVmUHRyPFRl
eHRUcmFjaz4gdGV4dFRyYWNrID0gVGV4dFRyYWNrOjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIGtpbmQsIGVtcHR5U3RyaW5nKCksIGxhYmVs
LCBsYW5ndWFnZSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZShBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywga2luZCwgZW1wdHlT
dHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlKTsKIAogICAgIC8vIE5vdGUsIGR1ZSB0byBzaWRlIGVm
ZmVjdHMgd2hlbiBjaGFuZ2luZyB0cmFjayBwYXJhbWV0ZXJzLCB3ZSBoYXZlIHRvCiAgICAgLy8g
Zmlyc3QgYXBwZW5kIHRoZSB0cmFjayB0byB0aGUgdGV4dCB0cmFjayBsaXN0LgogCiAgICAgLy8g
Ni4gQWRkIHRoZSBuZXcgdGV4dCB0cmFjayB0byB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2Yg
dGV4dCB0cmFja3MuCi0gICAgYWRkVGV4dFRyYWNrKHRleHRUcmFjayk7CisgICAgYWRkVGV4dFRy
YWNrKHRleHRUcmFjay5wdHIoKSk7CiAKICAgICAvLyAuLi4gaXRzIHRleHQgdHJhY2sgcmVhZGlu
ZXNzIHN0YXRlIHRvIHRoZSB0ZXh0IHRyYWNrIGxvYWRlZCBzdGF0ZSAuLi4KICAgICB0ZXh0VHJh
Y2stPnNldFJlYWRpbmVzc1N0YXRlKFRleHRUcmFjazo6TG9hZGVkKTsKQEAgLTM2MzYsNyArMzYz
Niw3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJh
Y2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNr
IG1vZGUgdG8gdGhlIHRleHQgdHJhY2sgaGlkZGVuIG1vZGUsIGFuZCBpdHMgdGV4dCB0cmFjayBs
aXN0IG9mIGN1ZXMgdG8gYW4gZW1wdHkgbGlzdCAuLi4KICAgICB0ZXh0VHJhY2stPnNldE1vZGUo
VGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4pOwogCi0gICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIFdURk1vdmUodGV4dFRyYWNrKTsKIH0KIAogQXVkaW9UcmFja0xpc3Qq
IEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKCkKQEAgLTUxOTMsOSArNTE5Myw5IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hh
bmdlZEV2ZW50KCkKIHsKICAgICBib29sIGhhc1RhcmdldHMgPSBtX21lZGlhU2Vzc2lvbi0+aGFz
V2lyZWxlc3NQbGF5YmFja1RhcmdldHMoKnRoaXMpOwogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OmVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgl
cCkgLSBoYXNUYXJnZXRzID0gJXMiLCB0aGlzLCBib29sU3RyaW5nKGhhc1RhcmdldHMpKTsKLSAg
ICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0
eWNoYW5nZWRFdmVudCwgaGFzVGFyZ2V0cyk7CisgICAgYXV0byBldmVudCA9IFdlYktpdFBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0cGxh
eWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQsIGhhc1RhcmdldHMpOwogICAgIGV2
ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50
KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdU
Rk1vdmUoZXZlbnQpKTsKICAgICB1cGRhdGVNZWRpYVN0YXRlKFVwZGF0ZU1lZGlhU3RhdGU6OkFz
eW5jaHJvbm91c2x5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCBiMjE0NzMxZjc0MTM3NDE5NzBiODE4YmI2MTkwMTNhYzEwNTJiODM2Li43NmE3OTNkMGE2
MjdlOGQwYzY5NzYwOThmMWVhMmYzZTlkMTgzZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtMjY3LDcgKzI2Nyw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgcGVy
Y2VudExvYWRlZCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFBhc3NS
ZWZQdHI8VGV4dFRyYWNrPiBhZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUmVmUHRyPFRleHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgRXhjZXB0aW9uQ29kZSYp
OwogCiAgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCk7CiAgICAgVGV4dFRyYWNrTGlz
dCogdGV4dFRyYWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
VmVydGV4QXJyYXlPYmplY3QuY3BwCmluZGV4IDE2YWE4ZDc1NzcwYmNmMDZhMDQ2MThhYzRjYjI3
Mzc4NjVlZDQ1NDQuLjhlZTdiNjMyODgzMjkzOGNkNjY3NzdiMmE5MWU2NzI3NDYzYThjMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVj
dC5jcHAKQEAgLTQ4LDE0ICs0OCwxNCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBP
RVNWZXJ0ZXhBcnJheU9iamVjdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU1ZlcnRl
eEFycmF5T2JqZWN0TmFtZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTPiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQorUmVmUHRy
PFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IE9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGVW
ZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgUmVm
UHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IG8gPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTOjpjcmVhdGUobV9jb250ZXh0LCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpWQU9UeXBl
VXNlcik7Ci0gICAgbV9jb250ZXh0LT5hZGRDb250ZXh0T2JqZWN0KG8uZ2V0KCkpOwotICAgIHJl
dHVybiBvLnJlbGVhc2UoKTsKKyAgICBhdXRvIG9iamVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVM6OmNyZWF0ZShtX2NvbnRleHQsIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZBT1R5
cGVVc2VyKTsKKyAgICBtX2NvbnRleHQtPmFkZENvbnRleHRPYmplY3Qob2JqZWN0LnB0cigpKTsK
KyAgICByZXR1cm4gV1RGTW92ZShvYmplY3QpOwogfQogCiB2b2lkIE9FU1ZlcnRleEFycmF5T2Jq
ZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKiBhcnJh
eU9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRl
eEFycmF5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJh
eU9iamVjdC5oCmluZGV4IDc0ZWE3ZjNkM2E5ZTZkYTVmYjkwZTFhMDMwOTc3NzU4ZmM3Y2ZmNjMu
LjU5ZTkzZTEzYzk1YmVmNmU3NWFhMWIyNjc3ZDEzNmQ2OTkzM2FhMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaApAQCAtNDMsNyAr
NDMsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICAKLSAgICBQYXNzUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IGNy
ZWF0ZVZlcnRleEFycmF5T0VTKCk7CisgICAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVM+IGNyZWF0ZVZlcnRleEFycmF5T0VTKCk7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9F
UyhXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKik7CiAgICAgR0MzRGJvb2xlYW4gaXNWZXJ0ZXhB
cnJheU9FUyhXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKik7CiAgICAgdm9pZCBiaW5kVmVydGV4
QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyosIEV4Y2VwdGlvbkNvZGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKaW5kZXggYTRhZjA3ZDg3ODQ2NTkyMTU4MTQ5NDkzMmJhODAzY2QxOTJmZGFi
Yy4uOTI5MDg5MWE1YjQxM2I3ZjIzNjM2NWRkOGU3OTBhYmViNjg4NDJlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKQEAgLTIyMDEsNyArMjIwMSw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRCdWZmZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNECiAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHZhbHVlKSk7CiB9
CiAKLVBhc3NSZWZQdHI8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQorUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJp
YnV0ZXM+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkK
IHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTIyMTEsMTIgKzIyMTEsMTIgQEAgUGFzc1JlZlB0cjxXZWJHTENvbnRleHRBdHRy
aWJ1dGVzPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRDb250ZXh0QXR0cmlidXQKICAg
ICAvLyBBbHNvLCB3ZSBuZWVkIHRvIGVuZm9yY2UgcmVxdWVzdGVkIHZhbHVlcyBvZiAiZmFsc2Ui
IGZvciBkZXB0aAogICAgIC8vIGFuZCBzdGVuY2lsLCByZWdhcmRsZXNzIG9mIHRoZSBwcm9wZXJ0
aWVzIG9mIHRoZSB1bmRlcmx5aW5nCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0M0QuCi0gICAgUmVm
UHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMgPSBXZWJHTENvbnRleHRBdHRy
aWJ1dGVzOjpjcmVhdGUobV9jb250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpKTsKKyAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUobV9jb250ZXh0
LT5nZXRDb250ZXh0QXR0cmlidXRlcygpKTsKICAgICBpZiAoIW1fYXR0cmlidXRlcy5kZXB0aCkK
ICAgICAgICAgYXR0cmlidXRlcy0+c2V0RGVwdGgoZmFsc2UpOwogICAgIGlmICghbV9hdHRyaWJ1
dGVzLnN0ZW5jaWwpCiAgICAgICAgIGF0dHJpYnV0ZXMtPnNldFN0ZW5jaWwoZmFsc2UpOwotICAg
IHJldHVybiBhdHRyaWJ1dGVzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhdHRyaWJ1
dGVzKTsKIH0KIAogR0MzRGVudW0gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RXJyb3Io
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oCmluZGV4IGNmZWIyOTE2MTUyZDEyNGFjM2E3ZDljMWYwOTMwNzA2M2Q3Zjk4
OTYuLmE1NjdhYWQwNGU5NzBkZjkwNDk2OTVlMjIyOGM2ODY4ZTczYjRhMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRBdHRhY2hlZFNoYWRl
cnMoV2ViR0xQcm9ncmFtKiwgVmVjdG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4+JiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIEdDM0RpbnQgZ2V0QXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKICAgICBXZWJHTEdldEluZm8gZ2V0QnVmZmVyUGFyYW1ldGVyKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNz
UmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGdldENvbnRleHRBdHRyaWJ1dGVzKCk7Cisg
ICAgUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGdldENvbnRleHRBdHRyaWJ1dGVzKCk7
CiAgICAgR0MzRGVudW0gZ2V0RXJyb3IoKTsKICAgICB2aXJ0dWFsIFdlYkdMRXh0ZW5zaW9uKiBn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHTEdl
dEluZm8gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggMDU1ZjJjNTYyM2IzY2Y2MGYz
NDljMDhlN2YxZDg2NGY1MGUxYzcwMC4uMzJmOTMwYmU5M2NhOGY3MzZiYmU4YmY3M2YxNTE0YmRj
M2MxYTY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtNTAyLDI3ICs1
MDIsMjYgQEAgdm9pZCBWVFRDdWU6OmNvcHlXZWJWVFROb2RlVG9ET01UcmVlKENvbnRhaW5lck5v
ZGUqIHdlYlZUVE5vZGUsIENvbnRhaW5lck5vZGUqIHAKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gVlRUQ3VlOjpnZXRDdWVBc0hUTUwoKQorUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IFZUVEN1ZTo6Z2V0Q3VlQXNIVE1MKCkKIHsKICAgICBjcmVhdGVXZWJWVFROb2Rl
VHJlZSgpOwogICAgIGlmICghbV93ZWJWVFROb2RlVHJlZSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNs
b25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKG93bmVyRG9jdW1lbnQoKSk7
Ci0gICAgY29weVdlYlZUVE5vZGVUb0RPTVRyZWUobV93ZWJWVFROb2RlVHJlZS5nZXQoKSwgY2xv
bmVkRnJhZ21lbnQuZ2V0KCkpOwotICAgIHJldHVybiBjbG9uZWRGcmFnbWVudC5yZWxlYXNlKCk7
CisgICAgYXV0byBjbG9uZWRGcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShvd25l
ckRvY3VtZW50KCkpOworICAgIGNvcHlXZWJWVFROb2RlVG9ET01UcmVlKG1fd2ViVlRUTm9kZVRy
ZWUuZ2V0KCksIGNsb25lZEZyYWdtZW50LnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShjbG9u
ZWRGcmFnbWVudCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVlRUQ3VlOjpj
cmVhdGVDdWVSZW5kZXJpbmdUcmVlKCkKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBWVFRDdWU6
OmNyZWF0ZUN1ZVJlbmRlcmluZ1RyZWUoKQogewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjbG9uZWRGcmFnbWVudDsKICAgICBjcmVhdGVXZWJWVFROb2RlVHJlZSgpOwogICAgIGlmICgh
bV93ZWJWVFROb2RlVHJlZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjbG9uZWRG
cmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50KCkpOwotICAg
IG1fd2ViVlRUTm9kZVRyZWUtPmNsb25lQ2hpbGROb2RlcygqY2xvbmVkRnJhZ21lbnQpOwotICAg
IHJldHVybiBjbG9uZWRGcmFnbWVudC5yZWxlYXNlKCk7CisgICAgYXV0byBjbG9uZWRGcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50KCkpOworICAgIG1fd2Vi
VlRUTm9kZVRyZWUtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFnbWVudCk7CisgICAgcmV0dXJu
IFdURk1vdmUoY2xvbmVkRnJhZ21lbnQpOwogfQogCiB2b2lkIFZUVEN1ZTo6c2V0UmVnaW9uSWQo
Y29uc3QgU3RyaW5nJiByZWdpb25JZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCmluZGV4
IDkyNTUyYWQwMDVjNjA5MzIwNjlmMDJkZjdjYmM5YTRlMmRkY2RiODMuLmRjZWRiMjZmZjJiNTcz
Mzc1MzkxOGNhZmZlYzUwNWM5NmVlZTAxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
aApAQCAtMTE0LDggKzExNCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGN1ZVNldHRp
bmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogICAgIHZvaWQgc2V0Q3VlU2V0dGlu
Z3MoY29uc3QgU3RyaW5nJik7CiAKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGdl
dEN1ZUFzSFRNTCgpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ3Vl
UmVuZGVyaW5nVHJlZSgpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBnZXRDdWVBc0hU
TUwoKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ3VlUmVuZGVyaW5nVHJl
ZSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiByZWdpb25JZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVn
aW9uSWQ7IH0KICAgICB2b2lkIHNldFJlZ2lvbklkKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKaW5kZXggMWY2MTBmNWQwYzIzZTMy
N2ViMDFiYTdlMTVlMGI0NjUyMWRiMGJmNi4uMDdkYTUxMjFjZDg3MWYzMDY2MzI4NWY5MmU3NTZh
YmZmZTVjZjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQu
Y3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFJlZjxFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjbG9uZUVs
ZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50JiB0CiAgICAgcmV0dXJu
IFdURk1vdmUoY2xvbmUpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBXZWJWVFRFbGVt
ZW50OjpjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVm
PEhUTUxFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gaHRtbEVsZW1l
bnQ7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBXZWJWVFRF
bGVtZW50OjpjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1lbnQmIGRvYwogICAgIEFT
U0VSVChodG1sRWxlbWVudCk7CiAgICAgaWYgKGh0bWxFbGVtZW50KQogICAgICAgICBodG1sRWxl
bWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBmYXN0R2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7Ci0gICAgcmV0dXJuIGh0bWxFbGVtZW50LnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gaHRtbEVsZW1lbnQucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQu
aAppbmRleCA0NDcwN2NhMmUxZjE1YTVjZThjMTE0NzZjMjkzODU0ODhlNGE4ZTc1Li4zZDVhYzYz
ZTgzMmFiYTRhYjAzODg1NTVjY2I4ZDhhNDZkYjI5NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtNDgsNyArNDgsNyBAQCBlbnVtIFdlYlZUVE5vZGVU
eXBlIHsKIGNsYXNzIFdlYlZUVEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgRWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxXZWJWVFRFbGVtZW50PiBjcmVhdGUoY29uc3QgV2ViVlRUTm9k
ZVR5cGUsIERvY3VtZW50Jik7Ci0gICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlRXF1
aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50Jik7CisgICAgUmVmPEhUTUxFbGVtZW50PiBjcmVh
dGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1lbnQmKTsKIAogICAgIFJlZjxFbGVtZW50PiBj
bG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50Jikgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCA4
ZTkyNjMwMjQ4NjQ0NjMxZmUxOWZhN2QyMWJmZDZhN2Q2YmMzM2NmLi4yMjIzOGJjY2NjNzg2ZGFk
YmYyYjg4NTc4NWI1NWI2N2YxYzIzNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgcHVibGljOgogICAgIFdlYlZUVFRy
ZWVCdWlsZGVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgOiBtX2RvY3VtZW50KGRvY3Vt
ZW50KSB7IH0KIAotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gYnVpbGRGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYgY3VlVGV4dCk7CisgICAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGJ1
aWxkRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGN1ZVRleHQpOwogCiBwcml2YXRlOgogICAgIHZv
aWQgY29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1bWVudCYpOwpAQCAtMzc1LDE5ICszNzUsMTkg
QEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKIH07CiAKLVBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gV2ViVlRUVHJlZUJ1aWxkZXI6OmJ1aWxkRnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmIGN1ZVRleHQpCitSZWY8RG9jdW1lbnRGcmFnbWVudD4gV2ViVlRUVHJlZUJ1aWxk
ZXI6OmJ1aWxkRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGN1ZVRleHQpCiB7CiAgICAgLy8gQ3Vl
IHRleHQgcHJvY2Vzc2luZyBiYXNlZCBvbgogICAgIC8vIDUuNCBXZWJWVFQgY3VlIHRleHQgcGFy
c2luZyBydWxlcywgYW5kCiAgICAgLy8gNS41IFdlYlZUVCBjdWUgdGV4dCBET00gY29uc3RydWN0
aW9uIHJ1bGVzLgotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3Vt
ZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9j
dW1lbnRGcmFnbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogCiAgICAgaWYgKGN1ZVRleHQuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGZyYWdtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVh
dGUobV9kb2N1bWVudCwgZW1wdHlTdHJpbmcoKSkpOwotICAgICAgICByZXR1cm4gZnJhZ21lbnQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAgfQogCi0gICAgbV9jdXJy
ZW50Tm9kZSA9IGZyYWdtZW50OworICAgIG1fY3VycmVudE5vZGUgPSBmcmFnbWVudC5wdHIoKTsK
IAogICAgIFdlYlZUVFRva2VuaXplciB0b2tlbml6ZXIoY3VlVGV4dCk7CiAgICAgbV9sYW5ndWFn
ZVN0YWNrLmNsZWFyKCk7CkBAIC0zOTUsMTAgKzM5NSwxMCBAQCBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IFdlYlZUVFRyZWVCdWlsZGVyOjpidWlsZEZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiBjdQogICAgIHdoaWxlICh0b2tlbml6ZXIubmV4dFRva2VuKG1fdG9rZW4pKQogICAgICAgICBj
b25zdHJ1Y3RUcmVlRnJvbVRva2VuKG1fZG9jdW1lbnQpOwogICAgIAotICAgIHJldHVybiBmcmFn
bWVudC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCi1QYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21D
dWVUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjdWVUZXh0KQorUmVmPERv
Y3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21D
dWVUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjdWVUZXh0KQogewogICAg
IFdlYlZUVFRyZWVCdWlsZGVyIHRyZWVCdWlsZGVyKGRvY3VtZW50KTsKICAgICByZXR1cm4gdHJl
ZUJ1aWxkZXIuYnVpbGRGcm9tU3RyaW5nKGN1ZVRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmgKaW5kZXggNTc2YmEwNzE3MzYxNTcwOGU0ODBlY2ZkNGJlNjYzMGI1
MzBkNGQzMy4uZTJhZDVkNzZmMzliZWYwZTI4MTNlMmI1NmYxYmI1OWE4YjdkODUzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZ2V0TmV3UmVnaW9ucyhWZWN0b3I8UmVmUHRyPFZUVFJlZ2lvbj4+
Jik7CiAKICAgICAvLyBDcmVhdGUgdGhlIERvY3VtZW50RnJhZ21lbnQgcmVwcmVzZW50YXRpb24g
b2YgdGhlIFdlYlZUVCBjdWUgdGV4dC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVEb2N1bWVudEZyYWdtZW50RnJvbUN1ZVRleHQoRG9jdW1lbnQmLCBjb25z
dCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZURvY3Vt
ZW50RnJhZ21lbnRGcm9tQ3VlVGV4dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOwogCiBwcm90
ZWN0ZWQ6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0Owo=
</data>
<flag name="review"
          id="302600"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>