<?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>201789</bug_id>
          
          <creation_ts>2019-09-13 19:16:33 -0700</creation_ts>
          <short_desc>Store sessionID on the NetworkConnectionToWebProcess now that there is one session per WebProcess</short_desc>
          <delta_ts>2019-09-16 01:02:22 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570801</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 19:16:33 -0700</bug_when>
    <thetext>Store sessionID on the NetworkConnectionToWebProcess now that there is one session per WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570814</commentid>
    <comment_count>1</comment_count>
      <attachid>378775</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 20:11:42 -0700</bug_when>
    <thetext>Created attachment 378775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570821</commentid>
    <comment_count>2</comment_count>
      <attachid>378778</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 20:37:07 -0700</bug_when>
    <thetext>Created attachment 378778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570824</commentid>
    <comment_count>3</comment_count>
      <attachid>378780</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 20:54:03 -0700</bug_when>
    <thetext>Created attachment 378780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570825</commentid>
    <comment_count>4</comment_count>
      <attachid>378781</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 21:08:45 -0700</bug_when>
    <thetext>Created attachment 378781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570828</commentid>
    <comment_count>5</comment_count>
      <attachid>378782</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 21:15:06 -0700</bug_when>
    <thetext>Created attachment 378782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570831</commentid>
    <comment_count>6</comment_count>
      <attachid>378784</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 21:18:36 -0700</bug_when>
    <thetext>Created attachment 378784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570832</commentid>
    <comment_count>7</comment_count>
      <attachid>378785</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 21:35:34 -0700</bug_when>
    <thetext>Created attachment 378785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571033</commentid>
    <comment_count>8</comment_count>
      <attachid>378785</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-16 00:16:26 -0700</bug_when>
    <thetext>Comment on attachment 378785
Patch

Hooray!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571039</commentid>
    <comment_count>9</comment_count>
      <attachid>378785</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 01:01:45 -0700</bug_when>
    <thetext>Comment on attachment 378785
Patch

Clearing flags on attachment: 378785

Committed r249891: &lt;https://trac.webkit.org/changeset/249891&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571040</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 01:01:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571041</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-16 01:02:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/55390782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571042</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-16 01:02:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/55390783&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378775</attachid>
            <date>2019-09-13 20:11:42 -0700</date>
            <delta_ts>2019-09-13 20:37:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201789-20190913201119.patch</filename>
            <type>text/plain</type>
            <size>91267</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmU3ZDgzYTBiYTM3M2U0
YjcyNWNjMTNmYTE0YjIxOThiMmE5NjUuLjE3ZjQ0NmY3MTM2NDAyN2I2NzYwZTI5ZDllYzlmZThk
ZjU0ZWMwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEzIEBACisyMDE5LTA5LTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRo
ZSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vz
c2lvbiBwZXIgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAxNzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRoZSBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgQXMgYSByZXN1bHQsIHdlIG5vIGxvbmdlciBuZWVkIHRvIHBhc3MgdGhlIHNlc3Npb25J
RCBpbiBlYWNoIElQQyBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZQorICAgICAgICBOZXR3b3Jr
UHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRD
aGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRy
YWNraW5nUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vzc2lvbklEIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0
YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1
bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpibG9iU2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0Ns
aWVudENvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJv
bVBhcmVudDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsQ2hhbmdlRG9jdW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25X
aXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpzZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmRlbGV0ZUNvb2tpZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnNlc3Npb25JRCBjb25zdCk6CisKIDIwMTktMDktMTEgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIEFSIFF1aWNrTG9v
ayB0byB0cmlnZ2VyIHByb2Nlc3NpbmcgaW4gdGhlIG9yaWdpbmF0aW5nIHBhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjBjMmVmNzc4MWZmODAzMjcyMzljOThjZjVjYzRiMDli
OGZmYWZkZC4uODYzN2QyZjRiNmFhZDRlYzBhNTYxNDI3MGYxM2RlYjI5ZDUyMGQxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc2LDE0ICs3NiwxNSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK1JlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIGNv
bm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MobmV0d29ya1Byb2Nlc3MsIHdlYlByb2Nlc3NJZGVudGlmaWVy
LCBzZXNzaW9uSUQsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKLU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCitOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiAg
ICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgICwgbV9tZG5zUmVnaXN0ZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTExMyw3ICsx
MTQsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CisgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwogI2VuZGlmCiB9CiAKQEAgLTIwNCwxNyArMjA1LDE2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3dlYklE
QkNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV93ZWJJREJDb25uZWN0aW9ucy5lbmQoKSkKLSAgICAgICAgICAgIGl0ZXJh
dG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIGlmIChtX3dlYklEQkNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3dlYklEQkNvbm5lY3Rp
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgaWYgKG1fc3dDb25uZWN0
aW9uKQorICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTI2OSw4ICsyNjksOCBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOworICAgICAgICBpZiAo
bV9zd0Nvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtMzE0LDEzICszMTQsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBhdXRvIGlkYkNvbm5lY3Rp
b25zID0gc3RkOjpleGNoYW5nZShtX3dlYklEQkNvbm5lY3Rpb25zLCB7IH0pOwotICAgIGZvciAo
YXV0byYgY29ubmVjdGlvbiA6IGlkYkNvbm5lY3Rpb25zLnZhbHVlcygpKQotICAgICAgICBjb25u
ZWN0aW9uLT5kaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOworICAgIGlmIChhdXRvIGlkYkNv
bm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCQ29ubmVjdGlvbiwgeyB9KSkKKyAgICAg
ICAgaWRiQ29ubmVjdGlvbi0+ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1bnJlZ2lzdGVyU1dDb25uZWN0
aW9ucygpOworICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCkBAIC0zMzIsMjAgKzMzMSwyMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSQogewogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiB1cmwsIFN0
cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
IW1fbmV0d29ya1NvY2tldFN0cmVhbXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIFdlYkNv
cmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiB0b2tlbiA9IHsgfTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+c291cmNlQXBwbGljYXRp
b25BdWRpdERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5zZXQo
aWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCksIFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmll
ciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0
cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdv
cmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHVybCksIG1fc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlv
biwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtTb2NrZXRDaGFubmVscy5jb250YWlucyhpZGVu
dGlmaWVyKSk7Ci0gICAgaWYgKGF1dG8gY2hhbm5lbCA9IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpj
cmVhdGUoKnRoaXMsIHNlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQor
ICAgIGlmIChhdXRvIGNoYW5uZWwgPSBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKCp0aGlz
LCBtX3Nlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQogICAgICAgICBt
X25ldHdvcmtTb2NrZXRDaGFubmVscy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjaGFubmVsKSk7
CiB9CiAKQEAgLTM3NCw5ICszNzMsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZW5kU3VzcGVuc2lvbigpCiAjZW5kaWYKIH0KIAorTmV0d29ya1Nlc3Npb24qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpuZXR3b3JrU2Vzc2lvbigpCit7CisgICAgcmV0dXJu
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24obV9zZXNzaW9uSUQpOworfQorCiBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApAQCAtNDkwLDMxICs0OTQsMzEgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVj
b25uZWN0aW8KICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGlkRmluaXNoUHJlY29ubmVjdGlvbihwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpLCAwKTsKIH0KIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oY29uc3QgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbigpCiB7Ci0gICAgaWYgKHNlc3Npb25JRCAhPSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgaWYgKG1fc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Mo
KS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCkpCiAgICAgICAgICAgICByZXR1cm4gKnN0b3Jh
Z2VTZXNzaW9uOwogCiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dz
aW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3
b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgogICAgICAgICAvLyBG
SVhNRTogRmluZCBhIHdheSB0byB0cmFjayBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb25zIG1vcmUg
cmlnb3JvdXNseS4KICAgICAgICAgTE9HX0VSUk9SKCJOb24tZGVmYXVsdCBzdG9yYWdlIHNlc3Np
b24gd2FzIHJlcXVlc3RlZCwgYnV0IHRoZXJlIHdhcyBubyBzZXNzaW9uIGZvciBpdC4gUGxlYXNl
IGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0IGRpc2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGlu
IHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3RlZCByYWNlLiIpOwogICAgIH0KLSAgICByZXR1cm4g
bmV0d29ya1Byb2Nlc3MuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgcmV0dXJuIG5ldHdv
cmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewot
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vz
c2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8v
IEluIGNhc2UgYSByZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBzZXJ2aWNlIHdvcmtlciwgd2UgZG8g
bm90IGhhdmUgeWV0IHRoZSBhYmlsaXR5IHRvIGNvbnZlcnQgdGhlIGxvYWQuCiAgICAgaWYgKCFt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpIHsKLSAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2Fk
SUQsIHJlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIo
KS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTI3LDEyICs1MzEsMTIgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2kKICAgICBsb2FkZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVl
c3QsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CisgICAgYXV0byYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBhdXRvIHJlc3Vs
dCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
KSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkK
ICAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24o
KnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24s
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBw
YWdlSUQsIFdURjo6bnVsbG9wdCk7CiAgICAgfQpAQCAtNTQwLDEwNCArNTQ0LDEwNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKIHsKLSAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCiAgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyksIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKICAg
ICB9CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZXNFbmFibGVkKCkpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKCkuY29va2llc0VuYWJsZWQoKSk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lv
bihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKCkuY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IHJlc3VsdDsKLSAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBz
ZXNzaW9uSUQpLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKKyAgICBzdG9yYWdlU2Vzc2lvbigpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsK
KyAgICBzdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIHNlc3Npb24t
PmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5cGUpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJs
b2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lv
bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNV
UkwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxG
cm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
ZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoLCBudWxscHRyKSwgY29udGVu
dFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5k
KQogewotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CiAgICAg
aWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlm
ICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uID8gc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
YmxvYlNpemUodXJsKSA6IDApOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKQEAgLTY2NywyMSArNjcxLDIxIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShmcmFtZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7Ci0gICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3Rv
cmFnZVNlc3Npb24obV9zZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Y2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdlSUQpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewog
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBbXSB7IH0pOwogICAgIH0KQEAgLTY5
Nyw5ICs3MDEsOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYQogICAgIH0KIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzA5LDkgKzcxMyw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHBy
b21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nl
c3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpIHsKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9y
YWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgd2ViUGFn
ZUlELCB3ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzIxLDkgKzcyNSw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
OlllcywgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVy
UGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5y
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzKSwgb3BlbmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikpOwogICAgIH0K
QEAgLTc0NSw5ICs3NDksOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJj
ZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291
cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9u
SUQpCitPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJj
ZSkKIHsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgaWYgKG1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAv
LyBFaXRoZXIgZ2V0IHRoZSBleGlzdGluZyByb290IGFjdGl2aXR5IHRyYWNrZXIgZm9yIHRoaXMg
cGFnZSBvciBjcmVhdGUgYQpAQCAtODQxLDM4ICs4NDUsMzUgQEAgc2l6ZV90IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNvdXJjZUxv
YWRJZGUKIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIgLSAlIiBQUkl1NjQsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKLSAgICBBU1NFUlQoIW1f
d2ViSURCQ29ubmVjdGlvbnMuY29udGFpbnMoc2Vzc2lvbklELnRvVUludDY0KCkpKTsKKyAgICBM
T0coSW5kZXhlZERCLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaElE
QkNvbm5lY3Rpb25Ub1NlcnZlciAtICUiIFBSSXU2NCwgbV9zZXNzaW9uSUQudG9VSW50NjQoKSk7
CisgICAgQVNTRVJUKCFtX3dlYklEQkNvbm5lY3Rpb24pOwogICAgIAotICAgIG1fd2ViSURCQ29u
bmVjdGlvbnMuYWRkKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCkpOworICAgIG1fd2ViSURCQ29ubmVjdGlvbiA9IFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3MsIG1fY29ubmVj
dGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciwgbV9zZXNzaW9uSUQpOwogfQogI2Vu
ZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCiB7Ci0gICAg
YXV0byBzd0Nvbm5lY3Rpb25zID0gV1RGTW92ZShtX3N3Q29ubmVjdGlvbnMpOwotICAgIGZvciAo
YXV0byYgc3dDb25uZWN0aW9uIDogc3dDb25uZWN0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc3dDb25uZWN0aW9uKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5zZXJ2ZXIoKS5yZW1v
dmVDb25uZWN0aW9uKHN3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgaWYg
KG1fc3dDb25uZWN0aW9uKQorICAgICAgICBtX3N3Q29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3Zl
Q29ubmVjdGlvbihtX3N3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiB7Ci0gICAgYXV0byYgc2VydmVyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0
byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29y
a1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3
U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwg
bV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLCBtX3Nlc3Npb25JRCk7
CiAKLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAg
ICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlc3Npb25JRCwgbWFrZVdlYWtQdHIoKmNvbm5lY3Rpb24p
KTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uKTsKKyAgICBtX3N3Q29ubmVjdGlvbiA9IG1h
a2VXZWFrUHRyKCpjb25uZWN0aW9uKTsKICAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3Zl
KGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZlciA9IG1f
bmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3RzKHNlc3Npb25JRCkpCisg
ICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lv
bklmRXhpc3RzKG1fc2Vzc2lvbklEKSkKICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0g
bWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nl
c3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0
KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWZiMGM5Y2QzNDE2
N2I2ZGNjYjBjOTE5ZWI2Y2RlMzQyODdmNWJmZS4uODgyNDFlM2RlZWIwZDM2MTgxMTI1ZTVmNTc4
MGNhM2I1YmIyZDgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtODQsOCArODQsMTEg
QEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHB1YmxpYzoKICAgICB1c2lu
ZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogCi0gICAg
c3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBOZXR3b3JrU2Vz
c2lvbiogbmV0d29ya1Nlc3Npb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KQEAgLTE0
MCw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmV0d29ya0xvYWRJbmZvcm1hdGlvbkJ5
SUQucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNv
dXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3Vy
Y2UpOwogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKQEAgLTE1Miw5ICsxNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6SGFzQWN0aXZpdHkpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRG
aW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwpAQCAtMTc2LDQwICsxODAsNDAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQg
cGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lID0geyB9KTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgIHZvaWQgY29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwot
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgZW5kKTsKLSAgICB2b2lkIGJsb2JTaXplKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7Ci0gICAgdm9pZCB3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKKyAg
ICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgdm9pZCBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0Vu
YWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIGdldFJhd0Nv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGlu
dDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIAotICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFt
KFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7
CisgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgdWludDY0X3QpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
dWludDY0X3QgaWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICAvLyBNZXNzYWdlcyBoYW5kbGVycyAoTW9kZXJuIElEQikuCi0gICAgdm9pZCBlc3RhYmxpc2hJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNo
SURCQ29ubmVjdGlvblRvU2VydmVyKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCk7Ci0gICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTV0Nv
bm5lY3Rpb25zKCk7CisgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKKyAg
ICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAog
ICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydDIpOwpAQCAtMjMxLDE0ICsyMzUsMTQgQEAgcHJpdmF0ZToKICAgICBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFy
UGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNzaW9uUmVzb3VyY2VMb2Fk
RGF0YSYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CisgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTI4MiwxMCArMjg2LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAogICAgIElQQzo6Q29ubmVj
dGlvbiogcGF5bWVudENvb3JkaW5hdG9yQ29ubmVjdGlvbihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIGZpbmFsOwogICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGlu
YXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFM
OjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9y
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZp
bmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5
cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyAgICBjb25zdCBT
dHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQ
YXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1l
c3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKICAgICB2b2lkIHBh
eW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CkBAIC0yOTMsNiAr
Mjk3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8TmV0
d29ya1NvY2tldFN0cmVhbT4+IG1fbmV0d29ya1NvY2tldFN0cmVhbXM7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPj4gbV9uZXR3b3Jr
U29ja2V0Q2hhbm5lbHM7CkBAIC0zMTUsMTEgKzMyMCwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Pj4gbV93ZWJJREJDb25uZWN0aW9uczsKKyAgICBS
ZWZQdHI8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX3dlYklEQkNvbm5lY3Rpb247CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAg
ICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRD
b25uZWN0aW9uOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGQxMzU0YTI1YzIwNzg4MDMyNzMyZDRkNjdlY2I0NTMwODRmMWJkOTYuLjky
MDViYmYxOWVjYjkwYjJlODg0ODQ2MDcxYzJkNzA4NzgxNjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzEsMzggKzMxLDQxIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQ
cmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAgICAgUHJlY29ubmVjdFRvKHVpbnQ2NF90IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQotICAgIENvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpCisgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0
ZWROYW1lKQorICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5nIGNvb2tpZVN0cmluZykKLSAg
ICBDb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGVuYWJs
ZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKSBTeW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgRGVsZXRlQ29va2llKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAg
Q29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNFbmFibGVk
KCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpi
b29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAt
PiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5j
aHJvbm91cworICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91
cworICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAotICAgIFJl
Z2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxl
LCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMs
IFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgVVJMIHNyY1VSTCkKLSAgICBSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmws
IFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQot
ICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
IHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKQotICAgIEJsb2JT
aXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3Vs
dFNpemUpIFN5bmNocm9ub3VzCi0gICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxT
dHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmws
IFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25I
YW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkK
KyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3Ry
aW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBl
bmQpCisgICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAgICBCbG9iU2l6ZShVUkwgdXJs
KSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKKyAgICBXcml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+
IGZpbGVOYW1lcykgQXN5bmMKIAogICAgIFNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCi0gICAgQ3JlYXRlU29ja2V0U3RyZWFtKFVSTCB1cmws
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRf
dCBpZGVudGlmaWVyKQotICAgIENyZWF0ZVNvY2tldENoYW5uZWwoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3RvY29s
LCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIENyZWF0ZVNvY2tldFN0cmVhbShVUkwgdXJsLCBT
dHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgQ3JlYXRlU29j
a2V0Q2hhbm5lbChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKTsKLSAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCisgICAgUmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOworICAgIENsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KTsKKyAgICBMb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQorICAgIAorICAgICMgRklYTUU6IFN0b3AgcGFzc2luZyBzZXNzaW9uSURzLgogICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9u
SUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+IHN0YXRpc3RpY3Mp
Ci0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2Vzcykg
QXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCi0gICAgUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBvcGVuZXJEb21haW4pCisKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BG
cmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4g
KGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBl
bnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKICNlbmRpZgogCiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
U3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBk
ZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtNzUs
MTIgKzc4LDEyIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBUYWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3ModWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyBuZXR3b3JrTWV0cmljcykgU3luY2hyb25vdXMKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotICAgIEVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKCkKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgRXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQorICAgIEVz
dGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQogI2VuZGlmCiAKICAgICBDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MSwgc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBwb3J0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTkxZjFiM2Y4MTNiZTZmMWQ0MDg4MmVjMjNhMjk0
ZjQ4MTNhYjNmYi4uM2ZmNmU5ZDM4NjVjODdhMDdhNGFiNDBiNTMzMDVjODIxNDEzNzk2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIsIElQQzo6QXR0YWNobWVudD4+CiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBpcGNDb25uZWN0aW9uID0gY3JlYXRlSVBDQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIG5ld0Nvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRl
KCp0aGlzLCBpZGVudGlmaWVyLCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CisgICAgYXV0byBuZXdD
b25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywg
aWRlbnRpZmllciwgc2Vzc2lvbklELCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CiAgICAgYXV0byYg
Y29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb24uZ2V0KCk7CiAKICAgICBBU1NFUlQoIW1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwZWRmMWQ1MGFjM2M5Y2U2MjY1
NTVlNTdhMzg5ZTg5OTgxMmNkNzdhLi5lYjk4NDJkMTdhZmNlMzUxNzk0ZTNhYTU0ZjFmNjM5MmJl
OGE5YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0zODgsNyArMzg4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJz
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYm
KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGEzZjdlYTMyNjRh
ZmYwMWQ4NmNkMDc5MmIxMTc1NTQzM2FlZjJkMDYuLjczOGQ3MGFmOWFmZDQwZWY4NjQ4YmU3ODA0
NjVlYmQ0OTU3NzY2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
IHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9u
IGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wg
aWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU4NGI3NjkwMGJjZDMxZjQxZjRlZDEy
MTQ1MmJlNzZmODQ4NWE1YjIuLmNkZTlmMjA1YTk1NThlZDg5ZGQ3MDc4ZGVmNGQzN2Q3NmRjOWMy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdS
ZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIHNlc3Npb25JRCgpKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNl
KCkpOwogCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAgIG1fd2FzU3RhcnRlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1MWIzZTkwODA2NmU1ZjhjNDFlZDgwMWY2MWFlOWIxMDE3
ZGY0ODVjLi44NTFiNTgwODNkZjgyOWJiOWNmMDc5Yzk1NzZmMTI3ZDQzNTEyMGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2NlcwogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24odWlu
dDY0X3QgY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm94eSkKIHsKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpIH0sIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3
ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25u
ZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwg
d2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkp
LCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmll
cikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQz
YzgyZjA0Njg0OGM4Y2QwNTliYzI1NjliZjRjYTI5M2E0ZmYxNGEuLjVkNjNkNDUzODEzNzUzNTVi
NjU5NDJhYjM2MTVmMjYwMDg1YzhmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ3Niw2ICsxNDc2LDEyIEBAIFdlYlByb2Nlc3NQb29sJiBX
ZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NQb29sKCkgY29uc3QKICAgICByZXR1cm4gKm1fcHJvY2Vz
c1Bvb2wuZ2V0KCk7CiB9CiAKK1BBTDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQcm94eTo6c2Vzc2lv
bklEKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICByZXR1
cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKK30KKwogI2lmIFBMQVRGT1JNKFdB
VENIT1MpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAppbmRleCA1ZDQzNWJmM2U4ZDBjNmYxMTQ5OTQ5MjEwYTQzMmViYmEyZTZmMjdiLi4y
N2Y2YjM2MThmMzlhNDAyMDExODA0MGVmN2ZlNzYyMDQzOTBiYWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoK
IAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VS
VChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAg
IHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgCisgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzRm9ySWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7
CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4
IDZjMmYxM2QwNjYwNTU3NmIzYWE4YjU0OTNhZWY5NzUzMThmY2QzOTQuLjk3MzNhNjMwZjI3ZTFj
MjA0MzU2Njg5YWYwNzI1MGQ5YmUxYmUyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlcihJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKCp0aGlzKSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJs
aXNoSURCQ29ubmVjdGlvblRvU2VydmVyKHNlc3Npb25JRCksIDApOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hJREJDb25uZWN0aW9u
VG9TZXJ2ZXIoKSwgMCk7CiB9CiAKIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6fldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggNzgxMTIwNzc4NGFmNjBhMmFkZWM1
NmNhYTU4NjRhNzFiM2FkMTIzYy4uNjZmNDQyYzI5Zjk5NzQxZTRlMTY1Y2RkYTkxMjhiOGY2OTVl
MTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVn
aXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBm
aWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBleHRlbnNpb25IYW5kbGU7CiAKQEAgLTQ0LDM5ICs0NCwzOSBAQCB2b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVVJMJgogICAgIGlmICghZmlsZS0+cGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUtPnBhdGgoKSwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHksIGV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVy
RmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGZpbGUtPnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxl
LCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIGZpbGUt
PnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJs
b2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9i
UGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JV
Ukwoc2Vzc2lvbklELCB1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
Z2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9p
ZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9pZCBCbG9iUmVnaXN0
cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGcm9tVVJMIHsgc2Vz
c2lvbklELCB1cmwsIHNyY1VSTCB9LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwg
eyB1cmwsIHNyY1VSTCB9LCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQg
QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxX
ZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoZmlsZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBmaWxlLT5wYXRoKCksIGNv
bnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCh1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lk
IEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3Rl
ckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdp
c3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJM
KHVybCksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxG
b3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVn
aXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
ZW5kKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uoc2Vzc2lvbklELCB1cmwsIHNy
Y1VSTCwgc3RhcnQsIGVuZCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJs
LCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIEJsb2JS
ZWdpc3RyeVByb3h5OjpibG9iU2l6ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgdXJsKQordW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgdWludDY0X3QgcmVzdWx0U2l6
ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplKHNlc3Npb25JRCwgdXJsKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZTo6UmVwbHkocmVzdWx0U2l6ZSks
IDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6QmxvYlNpemUodXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZTo6UmVwbHkocmVzdWx0U2l6ZSksIDApKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gcmVzdWx0U2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDg3ODAwNmVkOTUzMTIwMDQzY2E5ZjA5M2VhYWRlYzcwNmMzNGIxOTQu
LjQ0MjYxZTM5MGEwZjIwYzg1NGQwODU1NTYyMGZhZGZkYWRmZDZmMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcApAQCAtMjEwLDkgKzIxMCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
CiB7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQ
YXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNlc3Npb25JRCwgYmxvYlVSTHMpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkRmluaXNoUGluZ0xvYWQodWlu
dDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiYgZXJyb3IsIFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggM2U3OWY5YTdlMTRlNWExODIyZjZi
NGU2ZDVlYzJiZDdkYjM2MjM2ZC4uY2M3ZWM0MmVmMTViMWUzMTJiMjQ0Mzc4YzYzNjFkMGMxZTg2
YTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpD
b25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgaWYgKHJlcXVlc3QtPnVybCgpICE9IHVybCAmJiBtX2NsaWVudCkKICAgICAgICAg
bV9jbGllbnQtPmRpZFVwZ3JhZGVVUkwoKTsKIAotICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVs
IHsgbV9kb2N1bWVudC0+c2Vzc2lvbklEKCksICpyZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmll
cigpIH0pOworICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVsIHsgKnJlcXVlc3QsIHByb3RvY29s
LCBpZGVudGlmaWVyKCkgfSk7CiAgICAgcmV0dXJuIENvbm5lY3RTdGF0dXM6Ok9LOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFt
LmNwcAppbmRleCAxZmI2OTYxZmZmMGJhZDYzMWRlMTA5MmMwNGNmMjY4ZTJjMjc4YzRjLi4zY2E5
MDA0MmI3NTI3OWJmMzkxYmM1MzJhZDE5MWIyNmJlYTYzODQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTgyLDEx
ICs4MiwxMSBAQCBSZWY8V2ViU29ja2V0U3RyZWFtPiBXZWJTb2NrZXRTdHJlYW06OmNyZWF0ZShj
b25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQwogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlNvY2tldFN0cmVhbSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFy
dGl0aW9uKSk7CiB9CiAKLVdlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0IFVS
TCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQorV2ViU29j
a2V0U3RyZWFtOjpXZWJTb2NrZXRTdHJlYW0oY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBjYWNoZVBhcnRpdGlvbikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkK
ICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVNvY2tldFN0cmVhbSh1cmws
IHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIoKSksIDApOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3Jl
YXRlU29ja2V0U3RyZWFtKHVybCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIoKSksIDApOwog
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jayk7CiAg
ICAgQVNTRVJUKCFnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5jb250YWlucyhpZGVudGlmaWVy
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGE4YWE2Nzk2MjI5MmFhOGEyM2NmYTY2OGI5
ZjY3ZjVkMzQ3NDc3MDkuLjI3ZjMxZjM5YzNmMGNiYzU2OTA5YjZlNDQwMWNlOTE4NTZhYWIwOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtNjEsNyArNjEsNyBAQCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICwg
bV9zd09yaWdpblRhYmxlKG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5UYWJsZT4oKSkKIHsKICAg
ICBBU1NFUlQobV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIHsg
c2Vzc2lvbklEIH0pOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24geyB9KTsKIH0KIAogV2ViU1dDbGll
bnRDb25uZWN0aW9uOjp+V2ViU1dDbGllbnRDb25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcAppbmRleCBlODlkMGIzN2RlODkxMjBlNjQzYjQ3MzE3NDFkMjhhMTE2
Mzg2YTlkLi5lNjMzYzc3YzcxZjBiMGVmNzU0OTVkMTA0MjY2MjJkOTkzZDIzNmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJl
ZjxJUEM6OkNvbm5lY3Rpb24KICNlbmRpZgogewogICAgIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUo
c3RvcmUpOwotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0
aW9uIHsgbV9yZWdpc3RyYWJsZURvbWFpbiwgc2Vzc2lvbklEIH0sIDApOworICAgIG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV9yZWdpc3RyYWJsZURv
bWFpbiB9LCAwKTsKIH0KIAogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDgzMGU1YzgxNWZhNDg0ZTNjN2YxMjdjYzJlNGVlMzExYzQ5NGQxMDMu
LmM1NGY3ZGY5MWYyZDVmNDVlMGUwN2YwOTFlYzFiMDlhNWM1OTFlNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDIoKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCiAgICAgaWYgKG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlm
aWVyKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKAotICAgICAgICAg
ICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnNlc3Npb25JRCwgbV9m
cmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPmZyYW1lSUQsIG1fZnJhbWVTcGVj
aWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5wYWdlSUQpLCAwKTsKKyAgICAgICAgICAgIG1f
ZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5mcmFtZUlELCBtX2ZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+cGFnZUlEKSwgMCk7CiAgICAgICAgIG1fZnJh
bWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OwogICAgIH0K
ICNlbmRpZgpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoV2lsbENoYW5nZURvY3VtZW50KGNvbnN0IFVSTCYgY3VycmVudFVybCwgY29uCiAKICAg
ICBpZiAobV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgJiYgIVdlYkNvcmU6
OmFyZVJlZ2lzdHJhYmxlRG9tYWluc0VxdWFsKGN1cnJlbnRVcmwsIG5ld1VybCkpIHsKICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoCi0gICAgICAgICAgICBtX2ZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+c2Vzc2lvbklELCBtX2ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFj
Y2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDApOworICAgICAgICAgICAgbV9mcmFtZVNwZWNpZmlj
U3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPmZyYW1lSUQsIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VB
Y2Nlc3NJZGVudGlmaWVyLT5wYWdlSUQpLCAwKTsKICAgICAgICAgbV9mcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CiAgICAgfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCA1ZmIzY2YyMDlhM2U2YzFiZTM5
MGRiZjhlYWQ5MDQzZmU0M2ExNDQ1Li5lMWI0YjllYjNmMzg0ZjVmNWZmMjkxMzFhOTNjOGZkNmRm
MGMwNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTU5LDE0
ICs1OSwxNCBAQCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIoKQogewogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIg
b3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCit2b2lkIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
LCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkK
IHsKICAgICBhdXRvIG9wZW5lclVybCA9IG9wZW5lckRvY3VtZW50LnVybCgpOwogICAgIFJlZ2lz
dHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbiB7IG9wZW5lclVybCB9OwogICAgIGlmIChkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyRG9tYWluCiAgICAgICAgICYmICFvcGVuZXJE
b2N1bWVudC5oYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRl
cmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpCiAgICAgICAgICYmICFlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSkgewot
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoc2Vzc2lvbklELCBkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7CiAgICAgICAg
IAogICAgICAgICAvLyBSZW1lbWJlciB1c2VyIGludGVyYWN0aW9uLWJhc2VkIHJlcXVlc3RzIHNp
bmNlIHRoZXkgZG9uJ3QgbmVlZCB0byBiZSByZXBlYXRlZC4KICAgICAgICAgb3BlbmVyRG9jdW1l
bnQuc2V0SGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJh
Y3Rpb24oZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNl
ZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAKICAgICAvLyBXZSBub3RpZnkgcmlnaHQgYXdheSBpbiBj
YXNlIG9mIGEgdXNlciBpbnRlcmFjdGlvbiBpbnN0ZWFkIG9mIHdhaXRpbmcgdGhlIHVzdWFsIDUg
c2Vjb25kcyBiZWNhdXNlIHdlIHdhbnQKICAgICAvLyB0byB1cGRhdGUgY29va2llIGJsb2NraW5n
IHN0YXRlIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpMb2dVc2VySW50ZXJhY3Rpb24o
ZG9jdW1lbnQuc2Vzc2lvbklEKCksIHRvcEZyYW1lRG9tYWluKSwgMCk7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpMb2dVc2Vy
SW50ZXJhY3Rpb24odG9wRnJhbWVEb21haW4pLCAwKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgIGlmIChtX3Nob3VsZExvZ1VzZXJJbnRlcmFjdGlvbikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5kZXggZjZjNTU3
ZDVmMGZkMjAxZGJiNTA1MTE0N2ViYzI3MGE1YjQ1Y2YzYy4uM2FiNzhlNTM5ZDdlZWQ5YmM1YzI4
YWYzZWNiY2VmNTBmMDdmN2E2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFN0cmluZyBXZWJDb29r
aWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCkgY29uc3QKIAogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29r
aWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1l
bnQuc2Vzc2lvbklEKCksIGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRl
SW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRJbmNsdWRlU2VjdXJl
Q29va2llcyhkb2N1bWVudCwgdXJsKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpKSwgTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBs
eShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsKQEAgLTc0LDIyICs3NCwyMiBAQCB2
b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkucGFnZUlEKCk7CiAgICAgfQogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1
bWVudC5zZXNzaW9uSUQoKSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNp
dGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZyksIDAp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMo
KSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0
cmluZyksIDApOwogfQogCiBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3Qg
V2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewogICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChkb2N1bWVudC5zZXNzaW9uSUQo
KSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJs
ZWQ6OlJlcGx5KHJlc3VsdCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQoKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6
UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNz
ZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFM
OjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdl
YkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNz
aW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBTdHJp
bmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7
Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uSUQs
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVT
ZWN1cmVDb29raWVzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVD
b29raWVzQWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29va2llU3RyaW5n
LCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBy
ZXR1cm4geyBjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA/IFdlYkNvcmU6OlNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZDo6WWVzIDogV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2Vk
OjpObyB9OwogfQpAQCAtMTAzLDE0ICsxMDMsMTQgQEAgYm9vbCBXZWJDb29raWVKYXI6OmdldFJh
d0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHUK
ICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwogICAg
IH0KIAotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5zZXNzaW9uSUQoKSwg
ZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNp
dGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMp
LCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lk
IFdlYkNvb2tpZUphcjo6ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkRlbGV0ZUNvb2tpZShkb2N1bWVudC5zZXNzaW9uSUQoKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpEZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKSwgMCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCmluZGV4IDRjZTEwMTI4YWM0MGJjZmRhYjViZDdkMGZlNGIxODY0ZWM5MjdiM2EuLmI0
ODVjNTZiNDExNmFmMWFlYTY2MzgwYjcxYmExZDE1MjQyMzc5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTI4Myw5ICsyODMsNyBAQCB2
b2lkIFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3RyaQogICAgIGF1dG8gcG9saWN5RG93bmxvYWRJRCA9IG1fcG9s
aWN5RG93bmxvYWRJRDsKICAgICBtX3BvbGljeURvd25sb2FkSUQgPSB7IH07CiAKLSAgICBhdXRv
JiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEID0gcGFnZSgpID8gcGFnZSgpLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0gICAgd2ViUHJvY2Vzcy5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9h
ZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHBv
bGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZE5hbWUpLCAwKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVy
KiBkb2N1bWVudExvYWRlciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAt
MzA3LDcgKzMwNSw3IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIsCiAgICAgZWxzZQogICAgICAg
ICBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IDA7CiAKLSAgICB3ZWJQcm9jZXNzLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKHNlc3Npb25JRCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25s
b2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSwgMCk7CisgICAgd2ViUHJvY2Vzcy5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZChtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwg
cmVzcG9uc2UpLCAwKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IHJlcXVlc3RJRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMWNkYzBiNjllOGE0MzIzYmIzYTBj
ZWIzZWViMjAxZWIxNWIwMmJmMy4uYTkzYTU4MGM0MzMzMDhmNTdmMWM3NmEzNGVhMzIzZGJjMTUz
Zjc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogICAgICAgICByZXR1
cm47CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhzZXNzaW9uSUQoKSwgbV9p
ZGVudGlmaWVyKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKG1faWRlbnRpZmllciksIDApOwogI2VuZGlmCiAKICAgICBtX2lzQ2xvc2Vk
ID0gdHJ1ZTsKQEAgLTY1MzUsMTIgKzY1MzUsMTIgQEAgdm9pZCBXZWJQYWdlOjpmcmFtZUJlY2Ft
ZVJlbW90ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogdm9pZCBXZWJQYWdlOjpoYXNT
dG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJh
YmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIFdlYkZyYW1lJiBmcmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6SGFzU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQoKSwgV1RGTW92ZShzdWJGcmFtZURvbWFp
biksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZS5mcmFtZUlEKCksIG1faWRlbnRpZmll
ciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6SGFz
U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURv
bWFpbiksIGZyYW1lLmZyYW1lSUQoKSwgbV9pZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lz
dHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJh
bWVEb21haW4sIFdlYkZyYW1lJiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVx
dWVzdFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklEKCksIFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBX
VEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWUuZnJhbWVJRCgpLCBtX2lkZW50aWZpZXIsIG1f
d2ViUGFnZVByb3h5SWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZXNzaW9uSUQgPSBzZXNz
aW9uSUQoKSwgcGFnZUlEID0gbV9pZGVudGlmaWVyLCBmcmFtZUlEID0gZnJhbWUuZnJhbWVJRCgp
XShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIG11dGFibGUgeworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RG
TW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lLmZyYW1lSUQoKSwgbV9pZGVudGlmaWVyLCBtX3dl
YlBhZ2VQcm94eUlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2Vzc2lvbklEID0gc2Vzc2lv
bklEKCksIHBhZ2VJRCA9IG1faWRlbnRpZmllciwgZnJhbWVJRCA9IGZyYW1lLmZyYW1lSUQoKV0o
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHdh
c0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcykKICAgICAgICAgICAgIGZy
YW1lLT5mcmFtZUxvYWRlckNsaWVudCgpLT5zZXRIYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vz
cyh7IHNlc3Npb25JRCwgZnJhbWVJRCwgcGFnZUlEIH0pOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih3YXNHcmFudGVkLCBwcm9tcHRXYXNTaG93bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggOWIzNGVjMDQ2ZjVmMTg5MGNlOTZjZDIwODZkYzY3ZjNmNGY1
NzFlZi4uZTIyOTUwNzM4N2RjNTM3YzBmNWUzMmZhNzU1NGZkZmI2Yzc0MjIzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNjUxLDYgKzY1MSw4IEBAIFdlYlBh
Z2UqIFdlYlByb2Nlc3M6OndlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogCiB2
b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKKyAgICBBU1NFUlQocGFyYW1l
dGVycy5zZXNzaW9uSUQgPT0gc2Vzc2lvbklEKCkpOworCiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5
IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBhIHdpbmRvdy5v
cGVuKCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0cyBjcmVhdGVk
IGJvdGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2ggdGhlIG5vcm1hbCB3
YXkuIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOwpA
QCAtNjY5LDYgKzY3MSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmCiAKIHZvaWQgV2ViUHJv
Y2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCkKIHsKKyAgICBBU1NFUlQoc2Vzc2lvbklEID09IHRoaXMtPnNlc3Npb25JRCgp
KTsKICAgICBBU1NFUlQobV9wYWdlTWFwLmNvbnRhaW5zKHBhZ2VJRCkpOwogCiAgICAgcGFnZVdp
bGxMZWF2ZVdpbmRvdyhwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
aW5kZXggMjkyOGMxMDk1NGI3ZmNjYmY5MjA1OTZhMjM2OTY3NWE2ODVmN2Q0NS4uMDRmM2JlZWY3
ZGM0MjNlYjc0ZTA1MzFkNWZmMDIzYjExODU0NjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCkBAIC0xNjIsOSArMTYyLDcgQEAgcHVibGljOgogCiAgICAgSW5qZWN0ZWRC
dW5kbGUqIGluamVjdGVkQnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5n
ZXQoKTsgfQogICAgIAotICAgIC8vIFByZXdhcm1lZCBXZWJQcm9jZXNzZXMgZG8gbm90IGhhdmUg
YW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3aHkgdGhpcyBpcyBhbiBvcHRp
b25hbC4KLSAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2VzcyBnZXRzIGEgV2ViUGFnZSwg
aXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgotICAgIGNvbnN0IE9wdGlvbmFs
PFBBTDo6U2Vzc2lvbklEPiYgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7
IH0KKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IEFTU0VSVChtX3Nlc3Np
b25JRCk7IHJldHVybiAqbV9zZXNzaW9uSUQ7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7IH0KQEAgLTU3NCw2
ICs1NzIsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBIYXNoTWFwPFN0b3JhZ2VBcmVhSWRl
bnRpZmllciwgU3RvcmFnZUFyZWFNYXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsKKyAgICAKKyAgICAv
LyBQcmV3YXJtZWQgV2ViUHJvY2Vzc2VzIGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lv
bklEIHlldCwgd2hpY2ggaXMgd2h5IHRoaXMgaXMgYW4gb3B0aW9uYWwuCisgICAgLy8gQnkgdGhl
IHRpbWUgdGhlIFdlYlByb2Nlc3MgZ2V0cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8g
aGF2ZSBhIHNlc3Npb25JRC4KICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9zZXNzaW9u
SUQ7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378778</attachid>
            <date>2019-09-13 20:37:07 -0700</date>
            <delta_ts>2019-09-13 20:54:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201789-20190913203643.patch</filename>
            <type>text/plain</type>
            <size>94725</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmU3ZDgzYTBiYTM3M2U0
YjcyNWNjMTNmYTE0YjIxOThiMmE5NjUuLjE3ZjQ0NmY3MTM2NDAyN2I2NzYwZTI5ZDllYzlmZThk
ZjU0ZWMwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEzIEBACisyMDE5LTA5LTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRo
ZSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vz
c2lvbiBwZXIgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAxNzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRoZSBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgQXMgYSByZXN1bHQsIHdlIG5vIGxvbmdlciBuZWVkIHRvIHBhc3MgdGhlIHNlc3Npb25J
RCBpbiBlYWNoIElQQyBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZQorICAgICAgICBOZXR3b3Jr
UHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRD
aGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRy
YWNraW5nUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vzc2lvbklEIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0
YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1
bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpibG9iU2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0Ns
aWVudENvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJv
bVBhcmVudDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsQ2hhbmdlRG9jdW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25X
aXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpzZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmRlbGV0ZUNvb2tpZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnNlc3Npb25JRCBjb25zdCk6CisKIDIwMTktMDktMTEgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIEFSIFF1aWNrTG9v
ayB0byB0cmlnZ2VyIHByb2Nlc3NpbmcgaW4gdGhlIG9yaWdpbmF0aW5nIHBhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjBjMmVmNzc4MWZmODAzMjcyMzljOThjZjVjYzRiMDli
OGZmYWZkZC4uODYzN2QyZjRiNmFhZDRlYzBhNTYxNDI3MGYxM2RlYjI5ZDUyMGQxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc2LDE0ICs3NiwxNSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK1JlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIGNv
bm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MobmV0d29ya1Byb2Nlc3MsIHdlYlByb2Nlc3NJZGVudGlmaWVy
LCBzZXNzaW9uSUQsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKLU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCitOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiAg
ICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgICwgbV9tZG5zUmVnaXN0ZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTExMyw3ICsx
MTQsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CisgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwogI2VuZGlmCiB9CiAKQEAgLTIwNCwxNyArMjA1LDE2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3dlYklE
QkNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV93ZWJJREJDb25uZWN0aW9ucy5lbmQoKSkKLSAgICAgICAgICAgIGl0ZXJh
dG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIGlmIChtX3dlYklEQkNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3dlYklEQkNvbm5lY3Rp
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgaWYgKG1fc3dDb25uZWN0
aW9uKQorICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTI2OSw4ICsyNjksOCBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOworICAgICAgICBpZiAo
bV9zd0Nvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtMzE0LDEzICszMTQsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBhdXRvIGlkYkNvbm5lY3Rp
b25zID0gc3RkOjpleGNoYW5nZShtX3dlYklEQkNvbm5lY3Rpb25zLCB7IH0pOwotICAgIGZvciAo
YXV0byYgY29ubmVjdGlvbiA6IGlkYkNvbm5lY3Rpb25zLnZhbHVlcygpKQotICAgICAgICBjb25u
ZWN0aW9uLT5kaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOworICAgIGlmIChhdXRvIGlkYkNv
bm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCQ29ubmVjdGlvbiwgeyB9KSkKKyAgICAg
ICAgaWRiQ29ubmVjdGlvbi0+ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1bnJlZ2lzdGVyU1dDb25uZWN0
aW9ucygpOworICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCkBAIC0zMzIsMjAgKzMzMSwyMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSQogewogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiB1cmwsIFN0
cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
IW1fbmV0d29ya1NvY2tldFN0cmVhbXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIFdlYkNv
cmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiB0b2tlbiA9IHsgfTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+c291cmNlQXBwbGljYXRp
b25BdWRpdERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5zZXQo
aWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCksIFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmll
ciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0
cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdv
cmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHVybCksIG1fc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlv
biwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtTb2NrZXRDaGFubmVscy5jb250YWlucyhpZGVu
dGlmaWVyKSk7Ci0gICAgaWYgKGF1dG8gY2hhbm5lbCA9IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpj
cmVhdGUoKnRoaXMsIHNlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQor
ICAgIGlmIChhdXRvIGNoYW5uZWwgPSBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKCp0aGlz
LCBtX3Nlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQogICAgICAgICBt
X25ldHdvcmtTb2NrZXRDaGFubmVscy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjaGFubmVsKSk7
CiB9CiAKQEAgLTM3NCw5ICszNzMsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZW5kU3VzcGVuc2lvbigpCiAjZW5kaWYKIH0KIAorTmV0d29ya1Nlc3Npb24qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpuZXR3b3JrU2Vzc2lvbigpCit7CisgICAgcmV0dXJu
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24obV9zZXNzaW9uSUQpOworfQorCiBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApAQCAtNDkwLDMxICs0OTQsMzEgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVj
b25uZWN0aW8KICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGlkRmluaXNoUHJlY29ubmVjdGlvbihwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpLCAwKTsKIH0KIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oY29uc3QgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbigpCiB7Ci0gICAgaWYgKHNlc3Npb25JRCAhPSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgaWYgKG1fc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Mo
KS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCkpCiAgICAgICAgICAgICByZXR1cm4gKnN0b3Jh
Z2VTZXNzaW9uOwogCiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dz
aW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3
b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgogICAgICAgICAvLyBG
SVhNRTogRmluZCBhIHdheSB0byB0cmFjayBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb25zIG1vcmUg
cmlnb3JvdXNseS4KICAgICAgICAgTE9HX0VSUk9SKCJOb24tZGVmYXVsdCBzdG9yYWdlIHNlc3Np
b24gd2FzIHJlcXVlc3RlZCwgYnV0IHRoZXJlIHdhcyBubyBzZXNzaW9uIGZvciBpdC4gUGxlYXNl
IGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0IGRpc2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGlu
IHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3RlZCByYWNlLiIpOwogICAgIH0KLSAgICByZXR1cm4g
bmV0d29ya1Byb2Nlc3MuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgcmV0dXJuIG5ldHdv
cmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewot
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vz
c2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8v
IEluIGNhc2UgYSByZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBzZXJ2aWNlIHdvcmtlciwgd2UgZG8g
bm90IGhhdmUgeWV0IHRoZSBhYmlsaXR5IHRvIGNvbnZlcnQgdGhlIGxvYWQuCiAgICAgaWYgKCFt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpIHsKLSAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2Fk
SUQsIHJlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIo
KS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTI3LDEyICs1MzEsMTIgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2kKICAgICBsb2FkZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVl
c3QsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CisgICAgYXV0byYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBhdXRvIHJlc3Vs
dCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
KSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkK
ICAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24o
KnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24s
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBw
YWdlSUQsIFdURjo6bnVsbG9wdCk7CiAgICAgfQpAQCAtNTQwLDEwNCArNTQ0LDEwNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKIHsKLSAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCiAgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyksIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKICAg
ICB9CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZXNFbmFibGVkKCkpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKCkuY29va2llc0VuYWJsZWQoKSk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lv
bihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKCkuY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IHJlc3VsdDsKLSAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBz
ZXNzaW9uSUQpLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKKyAgICBzdG9yYWdlU2Vzc2lvbigpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsK
KyAgICBzdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIHNlc3Npb24t
PmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5cGUpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJs
b2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lv
bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNV
UkwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxG
cm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
ZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoLCBudWxscHRyKSwgY29udGVu
dFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5k
KQogewotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CiAgICAg
aWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlm
ICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uID8gc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
YmxvYlNpemUodXJsKSA6IDApOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKQEAgLTY2NywyMSArNjcxLDIxIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShmcmFtZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7Ci0gICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3Rv
cmFnZVNlc3Npb24obV9zZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Y2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdlSUQpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewog
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBbXSB7IH0pOwogICAgIH0KQEAgLTY5
Nyw5ICs3MDEsOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYQogICAgIH0KIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzA5LDkgKzcxMyw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHBy
b21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nl
c3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpIHsKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9y
YWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgd2ViUGFn
ZUlELCB3ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzIxLDkgKzcyNSw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
OlllcywgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVy
UGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5y
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzKSwgb3BlbmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikpOwogICAgIH0K
QEAgLTc0NSw5ICs3NDksOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJj
ZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291
cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9u
SUQpCitPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJj
ZSkKIHsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgaWYgKG1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAv
LyBFaXRoZXIgZ2V0IHRoZSBleGlzdGluZyByb290IGFjdGl2aXR5IHRyYWNrZXIgZm9yIHRoaXMg
cGFnZSBvciBjcmVhdGUgYQpAQCAtODQxLDM4ICs4NDUsMzUgQEAgc2l6ZV90IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNvdXJjZUxv
YWRJZGUKIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIgLSAlIiBQUkl1NjQsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKLSAgICBBU1NFUlQoIW1f
d2ViSURCQ29ubmVjdGlvbnMuY29udGFpbnMoc2Vzc2lvbklELnRvVUludDY0KCkpKTsKKyAgICBM
T0coSW5kZXhlZERCLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaElE
QkNvbm5lY3Rpb25Ub1NlcnZlciAtICUiIFBSSXU2NCwgbV9zZXNzaW9uSUQudG9VSW50NjQoKSk7
CisgICAgQVNTRVJUKCFtX3dlYklEQkNvbm5lY3Rpb24pOwogICAgIAotICAgIG1fd2ViSURCQ29u
bmVjdGlvbnMuYWRkKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCkpOworICAgIG1fd2ViSURCQ29ubmVjdGlvbiA9IFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3MsIG1fY29ubmVj
dGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciwgbV9zZXNzaW9uSUQpOwogfQogI2Vu
ZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCiB7Ci0gICAg
YXV0byBzd0Nvbm5lY3Rpb25zID0gV1RGTW92ZShtX3N3Q29ubmVjdGlvbnMpOwotICAgIGZvciAo
YXV0byYgc3dDb25uZWN0aW9uIDogc3dDb25uZWN0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc3dDb25uZWN0aW9uKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5zZXJ2ZXIoKS5yZW1v
dmVDb25uZWN0aW9uKHN3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgaWYg
KG1fc3dDb25uZWN0aW9uKQorICAgICAgICBtX3N3Q29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3Zl
Q29ubmVjdGlvbihtX3N3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiB7Ci0gICAgYXV0byYgc2VydmVyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0
byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29y
a1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3
U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwg
bV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLCBtX3Nlc3Npb25JRCk7
CiAKLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAg
ICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlc3Npb25JRCwgbWFrZVdlYWtQdHIoKmNvbm5lY3Rpb24p
KTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uKTsKKyAgICBtX3N3Q29ubmVjdGlvbiA9IG1h
a2VXZWFrUHRyKCpjb25uZWN0aW9uKTsKICAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3Zl
KGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZlciA9IG1f
bmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3RzKHNlc3Npb25JRCkpCisg
ICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lv
bklmRXhpc3RzKG1fc2Vzc2lvbklEKSkKICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0g
bWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nl
c3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0
KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWZiMGM5Y2QzNDE2
N2I2ZGNjYjBjOTE5ZWI2Y2RlMzQyODdmNWJmZS4uODgyNDFlM2RlZWIwZDM2MTgxMTI1ZTVmNTc4
MGNhM2I1YmIyZDgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtODQsOCArODQsMTEg
QEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHB1YmxpYzoKICAgICB1c2lu
ZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogCi0gICAg
c3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBOZXR3b3JrU2Vz
c2lvbiogbmV0d29ya1Nlc3Npb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KQEAgLTE0
MCw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmV0d29ya0xvYWRJbmZvcm1hdGlvbkJ5
SUQucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNv
dXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3Vy
Y2UpOwogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKQEAgLTE1Miw5ICsxNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6SGFzQWN0aXZpdHkpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRG
aW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwpAQCAtMTc2LDQwICsxODAsNDAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQg
cGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lID0geyB9KTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgIHZvaWQgY29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwot
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgZW5kKTsKLSAgICB2b2lkIGJsb2JTaXplKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7Ci0gICAgdm9pZCB3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKKyAg
ICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgdm9pZCBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0Vu
YWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIGdldFJhd0Nv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGlu
dDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIAotICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFt
KFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7
CisgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgdWludDY0X3QpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
dWludDY0X3QgaWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICAvLyBNZXNzYWdlcyBoYW5kbGVycyAoTW9kZXJuIElEQikuCi0gICAgdm9pZCBlc3RhYmxpc2hJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNo
SURCQ29ubmVjdGlvblRvU2VydmVyKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCk7Ci0gICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTV0Nv
bm5lY3Rpb25zKCk7CisgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKKyAg
ICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAog
ICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydDIpOwpAQCAtMjMxLDE0ICsyMzUsMTQgQEAgcHJpdmF0ZToKICAgICBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFy
UGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNzaW9uUmVzb3VyY2VMb2Fk
RGF0YSYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CisgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTI4MiwxMCArMjg2LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAogICAgIElQQzo6Q29ubmVj
dGlvbiogcGF5bWVudENvb3JkaW5hdG9yQ29ubmVjdGlvbihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIGZpbmFsOwogICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGlu
YXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFM
OjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9y
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZp
bmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5
cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyAgICBjb25zdCBT
dHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQ
YXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1l
c3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKICAgICB2b2lkIHBh
eW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CkBAIC0yOTMsNiAr
Mjk3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8TmV0
d29ya1NvY2tldFN0cmVhbT4+IG1fbmV0d29ya1NvY2tldFN0cmVhbXM7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPj4gbV9uZXR3b3Jr
U29ja2V0Q2hhbm5lbHM7CkBAIC0zMTUsMTEgKzMyMCwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Pj4gbV93ZWJJREJDb25uZWN0aW9uczsKKyAgICBS
ZWZQdHI8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX3dlYklEQkNvbm5lY3Rpb247CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAg
ICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRD
b25uZWN0aW9uOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGQxMzU0YTI1YzIwNzg4MDMyNzMyZDRkNjdlY2I0NTMwODRmMWJkOTYuLjky
MDViYmYxOWVjYjkwYjJlODg0ODQ2MDcxYzJkNzA4NzgxNjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzEsMzggKzMxLDQxIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQ
cmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAgICAgUHJlY29ubmVjdFRvKHVpbnQ2NF90IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQotICAgIENvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpCisgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0
ZWROYW1lKQorICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5nIGNvb2tpZVN0cmluZykKLSAg
ICBDb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGVuYWJs
ZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKSBTeW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgRGVsZXRlQ29va2llKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAg
Q29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNFbmFibGVk
KCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpi
b29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAt
PiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5j
aHJvbm91cworICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91
cworICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAotICAgIFJl
Z2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxl
LCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMs
IFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgVVJMIHNyY1VSTCkKLSAgICBSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmws
IFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQot
ICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
IHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKQotICAgIEJsb2JT
aXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3Vs
dFNpemUpIFN5bmNocm9ub3VzCi0gICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxT
dHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmws
IFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25I
YW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkK
KyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3Ry
aW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBl
bmQpCisgICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAgICBCbG9iU2l6ZShVUkwgdXJs
KSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKKyAgICBXcml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+
IGZpbGVOYW1lcykgQXN5bmMKIAogICAgIFNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCi0gICAgQ3JlYXRlU29ja2V0U3RyZWFtKFVSTCB1cmws
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRf
dCBpZGVudGlmaWVyKQotICAgIENyZWF0ZVNvY2tldENoYW5uZWwoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3RvY29s
LCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIENyZWF0ZVNvY2tldFN0cmVhbShVUkwgdXJsLCBT
dHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgQ3JlYXRlU29j
a2V0Q2hhbm5lbChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKTsKLSAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCisgICAgUmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOworICAgIENsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KTsKKyAgICBMb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQorICAgIAorICAgICMgRklYTUU6IFN0b3AgcGFzc2luZyBzZXNzaW9uSURzLgogICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9u
SUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+IHN0YXRpc3RpY3Mp
Ci0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2Vzcykg
QXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCi0gICAgUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBvcGVuZXJEb21haW4pCisKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BG
cmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4g
KGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBl
bnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKICNlbmRpZgogCiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
U3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBk
ZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtNzUs
MTIgKzc4LDEyIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBUYWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3ModWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyBuZXR3b3JrTWV0cmljcykgU3luY2hyb25vdXMKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotICAgIEVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKCkKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgRXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQorICAgIEVz
dGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQogI2VuZGlmCiAKICAgICBDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MSwgc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBwb3J0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTkxZjFiM2Y4MTNiZTZmMWQ0MDg4MmVjMjNhMjk0
ZjQ4MTNhYjNmYi4uM2ZmNmU5ZDM4NjVjODdhMDdhNGFiNDBiNTMzMDVjODIxNDEzNzk2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIsIElQQzo6QXR0YWNobWVudD4+CiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBpcGNDb25uZWN0aW9uID0gY3JlYXRlSVBDQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIG5ld0Nvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRl
KCp0aGlzLCBpZGVudGlmaWVyLCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CisgICAgYXV0byBuZXdD
b25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywg
aWRlbnRpZmllciwgc2Vzc2lvbklELCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CiAgICAgYXV0byYg
Y29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb24uZ2V0KCk7CiAKICAgICBBU1NFUlQoIW1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwZWRmMWQ1MGFjM2M5Y2U2MjY1
NTVlNTdhMzg5ZTg5OTgxMmNkNzdhLi5lYjk4NDJkMTdhZmNlMzUxNzk0ZTNhYTU0ZjFmNjM5MmJl
OGE5YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0zODgsNyArMzg4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJz
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYm
KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGEzZjdlYTMyNjRh
ZmYwMWQ4NmNkMDc5MmIxMTc1NTQzM2FlZjJkMDYuLjczOGQ3MGFmOWFmZDQwZWY4NjQ4YmU3ODA0
NjVlYmQ0OTU3NzY2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
IHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9u
IGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wg
aWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU4NGI3NjkwMGJjZDMxZjQxZjRlZDEy
MTQ1MmJlNzZmODQ4NWE1YjIuLmNkZTlmMjA1YTk1NThlZDg5ZGQ3MDc4ZGVmNGQzN2Q3NmRjOWMy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdS
ZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIHNlc3Npb25JRCgpKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNl
KCkpOwogCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAgIG1fd2FzU3RhcnRlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1MWIzZTkwODA2NmU1ZjhjNDFlZDgwMWY2MWFlOWIxMDE3
ZGY0ODVjLi44NTFiNTgwODNkZjgyOWJiOWNmMDc5Yzk1NzZmMTI3ZDQzNTEyMGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2NlcwogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24odWlu
dDY0X3QgY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm94eSkKIHsKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpIH0sIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3
ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25u
ZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwg
d2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkp
LCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmll
cikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQz
YzgyZjA0Njg0OGM4Y2QwNTliYzI1NjliZjRjYTI5M2E0ZmYxNGEuLjVkNjNkNDUzODEzNzUzNTVi
NjU5NDJhYjM2MTVmMjYwMDg1YzhmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ3Niw2ICsxNDc2LDEyIEBAIFdlYlByb2Nlc3NQb29sJiBX
ZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NQb29sKCkgY29uc3QKICAgICByZXR1cm4gKm1fcHJvY2Vz
c1Bvb2wuZ2V0KCk7CiB9CiAKK1BBTDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQcm94eTo6c2Vzc2lv
bklEKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICByZXR1
cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKK30KKwogI2lmIFBMQVRGT1JNKFdB
VENIT1MpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAppbmRleCA1ZDQzNWJmM2U4ZDBjNmYxMTQ5OTQ5MjEwYTQzMmViYmEyZTZmMjdiLi4y
N2Y2YjM2MThmMzlhNDAyMDExODA0MGVmN2ZlNzYyMDQzOTBiYWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoK
IAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VS
VChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAg
IHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgCisgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzRm9ySWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7
CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4
IDZjMmYxM2QwNjYwNTU3NmIzYWE4YjU0OTNhZWY5NzUzMThmY2QzOTQuLjk3MzNhNjMwZjI3ZTFj
MjA0MzU2Njg5YWYwNzI1MGQ5YmUxYmUyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlcihJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKCp0aGlzKSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJs
aXNoSURCQ29ubmVjdGlvblRvU2VydmVyKHNlc3Npb25JRCksIDApOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hJREJDb25uZWN0aW9u
VG9TZXJ2ZXIoKSwgMCk7CiB9CiAKIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6fldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggNzgxMTIwNzc4NGFmNjBhMmFkZWM1
NmNhYTU4NjRhNzFiM2FkMTIzYy4uNjZmNDQyYzI5Zjk5NzQxZTRlMTY1Y2RkYTkxMjhiOGY2OTVl
MTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVn
aXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBm
aWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBleHRlbnNpb25IYW5kbGU7CiAKQEAgLTQ0LDM5ICs0NCwzOSBAQCB2b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVVJMJgogICAgIGlmICghZmlsZS0+cGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUtPnBhdGgoKSwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHksIGV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVy
RmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGZpbGUtPnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxl
LCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIGZpbGUt
PnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJs
b2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9i
UGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JV
Ukwoc2Vzc2lvbklELCB1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
Z2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9p
ZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9pZCBCbG9iUmVnaXN0
cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGcm9tVVJMIHsgc2Vz
c2lvbklELCB1cmwsIHNyY1VSTCB9LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwg
eyB1cmwsIHNyY1VSTCB9LCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQg
QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxX
ZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoZmlsZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBmaWxlLT5wYXRoKCksIGNv
bnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCh1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lk
IEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3Rl
ckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdp
c3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJM
KHVybCksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxG
b3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVn
aXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
ZW5kKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uoc2Vzc2lvbklELCB1cmwsIHNy
Y1VSTCwgc3RhcnQsIGVuZCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJs
LCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIEJsb2JS
ZWdpc3RyeVByb3h5OjpibG9iU2l6ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgdXJsKQordW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgdWludDY0X3QgcmVzdWx0U2l6
ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplKHNlc3Npb25JRCwgdXJsKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZTo6UmVwbHkocmVzdWx0U2l6ZSks
IDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6QmxvYlNpemUodXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZTo6UmVwbHkocmVzdWx0U2l6ZSksIDApKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gcmVzdWx0U2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDg3ODAwNmVkOTUzMTIwMDQzY2E5ZjA5M2VhYWRlYzcwNmMzNGIxOTQu
LmUxOGYwYWU3OGYyZTYyNTdmZDgyNDY5OTUzZmUzMjQ1NjNlYTlkNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcApAQCAtMjEwLDkgKzIxMCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
CiB7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQ
YXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNlc3Npb25JRCwgYmxvYlVSTHMpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkRmluaXNoUGluZ0xvYWQodWlu
dDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiYgZXJyb3IsIFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSkKQEAgLTI2MCw4ICsyNjAsOCBAQCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXImIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6aWRiQ29ubmVjdGlvblRvU2VydmVy
Rm9yU2VzcwogV2ViU1dDbGllbnRDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIHJldHVybiAqbV9z
d0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmVuc3VyZShzZXNzaW9uSUQsIFtzZXNzaW9uSURdIHsKLSAg
ICAgICAgcmV0dXJuIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y3JlYXRlKHNlc3Npb25JRCk7Cisg
ICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZW5zdXJlKHNlc3Npb25JRCwgW10g
eworICAgICAgICByZXR1cm4gV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUoKTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXgg
MmI0ZWExYTc5NGRhZTkzZTgzYjgxNDVhNTAxYjhjYTMzNDJhZGI5Ni4uZTg4NDlmZWMxN2JhMDY4
MmViYmRhNGQzZGY4OTcxYjZkMWUxOTRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTEw
OSw2ICsxMDksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgc2luZ2xlIGNvbm5lY3Rpb24uCiAg
ICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4+
IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbjsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggM2U3
OWY5YTdlMTRlNWExODIyZjZiNGU2ZDVlYzJiZDdkYjM2MjM2ZC4uY2M3ZWM0MmVmMTViMWUzMTJi
MjQ0Mzc4YzYzNjFkMGMxZTg2YTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBX
ZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3Qo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgaWYgKHJlcXVlc3QtPnVybCgpICE9IHVybCAmJiBt
X2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZFVwZ3JhZGVVUkwoKTsKIAotICAgIE1lc3Nh
Z2VTZW5kZXI6OnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
cmVhdGVTb2NrZXRDaGFubmVsIHsgbV9kb2N1bWVudC0+c2Vzc2lvbklEKCksICpyZXF1ZXN0LCBw
cm90b2NvbCwgaWRlbnRpZmllcigpIH0pOworICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVsIHsg
KnJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKCkgfSk7CiAgICAgcmV0dXJuIENvbm5lY3RT
dGF0dXM6Ok9LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCAxZmI2OTYxZmZmMGJhZDYzMWRlMTA5MmMwNGNm
MjY4ZTJjMjc4YzRjLi4zY2E5MDA0MmI3NTI3OWJmMzkxYmM1MzJhZDE5MWIyNmJlYTYzODQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHAKQEAgLTgyLDExICs4MiwxMSBAQCBSZWY8V2ViU29ja2V0U3RyZWFtPiBXZWJTb2Nr
ZXRTdHJlYW06OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQwogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldFN0cmVhbSh1cmwsIGNsaWVudCwgc2Vzc2lv
bklELCBjcmVkZW50aWFsUGFydGl0aW9uKSk7CiB9CiAKLVdlYlNvY2tldFN0cmVhbTo6V2ViU29j
a2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hl
UGFydGl0aW9uKQorV2ViU29ja2V0U3RyZWFtOjpXZWJTb2NrZXRTdHJlYW0oY29uc3QgVVJMJiB1
cmwsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikKICAgICA6IFNvY2tldFN0cmVhbUhh
bmRsZSh1cmwsIGNsaWVudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0
ZVNvY2tldFN0cmVhbSh1cmwsIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIo
KSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q3JlYXRlU29ja2V0U3RyZWFtKHVybCwgY2FjaGVQYXJ0aXRpb24sIGlk
ZW50aWZpZXIoKSksIDApOwogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsV2ViU29ja2V0
U3RyZWFtTWFwTG9jayk7CiAgICAgQVNTRVJUKCFnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5j
b250YWlucyhpZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGE4YWE2Nzk2
MjI5MmFhOGEyM2NmYTY2OGI5ZjY3ZjVkMzQ3NDc3MDkuLjA2YTRjYzdkYjdhMThjMTE4N2JhZmM2
NTg4NTU0MzJjNDVlYjJhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtNTUsMTMgKzU1LDEx
IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogCi1X
ZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbihTZXNzaW9uSUQgc2Vz
c2lvbklEKQotICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9pZGVudGlmaWVy
KFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKK1dlYlNXQ2xpZW50Q29ubmVjdGlvbjo6V2ViU1dDbGll
bnRDb25uZWN0aW9uKCkKKyAgICA6IG1faWRlbnRpZmllcihQcm9jZXNzOjppZGVudGlmaWVyKCkp
CiAgICAgLCBtX3N3T3JpZ2luVGFibGUobWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigp
KQogewotICAgIEFTU0VSVChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24geyBzZXNzaW9uSUQgfSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbiB7IH0pOwogfQogCiBX
ZWJTV0NsaWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaAppbmRleCBlZmVmMzZiY2FjZDI4NTQ1N2JlMDE0ZjhkNGNiYzlkYTY5OWMyZjhiLi4yN2Zl
YTJjMWIyNGI4YzJhOTY0YzRlOTY3ZDNmN2VjYTM4ZDAzNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXQ2xp
ZW50Q29ubmVjdGlvbi5oPgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDcgKzQ4LDcgQEAg
Y2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOwogCiBjbGFzcyBXZWJTV0NsaWVudENvbm5l
Y3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uLCBwcml2YXRl
IElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4gY3JlYXRlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5l
Y3Rpb24geyBzZXNzaW9uSUQgfSk7IH0KKyAgICBzdGF0aWMgUmVmPFdlYlNXQ2xpZW50Q29ubmVj
dGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5lY3Rp
b24pOyB9CiAgICAgfldlYlNXQ2xpZW50Q29ubmVjdGlvbigpOwogCiAgICAgV2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQpAQCAtNjksMTAgKzY4LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0KIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBXZWJTV0NsaWVudENvbm5l
Y3Rpb24oKTsKIAogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3Jp
cHRJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5h
bDsKQEAgLTk4LDE0ICs5NSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuT3JEZWxheVRhc2tG
b3JJbXBvcnQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spOwogCiAgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9u
SUQudG9VSW50NjQoKTsgfQorICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogCiAgICAgdm9pZCBzZXRTV09yaWdpblRhYmxl
U2hhcmVkTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJik7CiAgICAgdm9pZCBzZXRT
V09yaWdpblRhYmxlSXNJbXBvcnRlZCgpOwogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICBVbmlxdWVSZWY8V2ViU1dPcmlnaW5UYWJs
ZT4gbV9zd09yaWdpblRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmlu
ZGV4IGU4OWQwYjM3ZGU4OTEyMGU2NDNiNDczMTc0MWQyOGExMTYzODZhOWQuLmU2MzNjNzdjNzFm
MGIwZWY3NTQ5NWQxMDQyNjYyMmQ5OTNkMjM2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbgog
I2VuZGlmCiB7CiAgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdG9yZSk7Ci0gICAgbV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxl
RG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlz
aFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIDApOwogfQogCiBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODMw
ZTVjODE1ZmE0ODRlM2M3ZjEyN2NjMmU0ZWUzMTFjNDk0ZDEwMy4uYzU0ZjdkZjkxZjJkNWY0NWUw
ZTA3ZjA5MWVjMWIwOWE1YzU5MWU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRG
cm9tUGFyZW50MigpCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBp
ZiAobV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIpIHsKICAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoCi0gICAgICAgICAgICBtX2ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzSWRlbnRpZmllci0+c2Vzc2lvbklELCBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lk
ZW50aWZpZXItPnBhZ2VJRCksIDApOworICAgICAgICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFn
ZUFjY2Vzc0lkZW50aWZpZXItPmZyYW1lSUQsIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJ
ZGVudGlmaWVyLT5wYWdlSUQpLCAwKTsKICAgICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFj
Y2Vzc0lkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CiAgICAgfQogI2VuZGlmCkBAIC00MjUsNyAr
NDI1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2hhbmdlRG9j
dW1lbnQoY29uc3QgVVJMJiBjdXJyZW50VXJsLCBjb24KIAogICAgIGlmIChtX2ZyYW1lU3BlY2lm
aWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciAmJiAhV2ViQ29yZTo6YXJlUmVnaXN0cmFibGVEb21h
aW5zRXF1YWwoY3VycmVudFVybCwgbmV3VXJsKSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW92ZVN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZSgKLSAgICAgICAgICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJ
ZGVudGlmaWVyLT5zZXNzaW9uSUQsIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlm
aWVyLT5mcmFtZUlELCBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+cGFn
ZUlEKSwgMCk7CisgICAgICAgICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRp
Zmllci0+ZnJhbWVJRCwgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnBh
Z2VJRCksIDApOwogICAgICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmll
ciA9IFdURjo6bnVsbG9wdDsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuY3BwCmluZGV4IDVmYjNjZjIwOWEzZTZjMWJlMzkwZGJmOGVhZDkwNDNmZTQzYTE0
NDUuLmUxYjRiOWViM2YzODRmNWY1ZmYyOTEzMWE5M2M4ZmQ2ZGYwYzA2NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNTksMTQgKzU5LDE0IEBAIFdlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3Vt
ZW50JiBvcGVuZXJEb2N1bWVudCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9w
ZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQogewogICAgIGF1dG8gb3BlbmVy
VXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7CiAgICAgUmVnaXN0cmFibGVEb21haW4gb3BlbmVy
RG9tYWluIHsgb3BlbmVyVXJsIH07CiAgICAgaWYgKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyAhPSBvcGVuZXJEb21haW4KICAgICAgICAgJiYgIW9wZW5lckRvY3VtZW50Lmhhc1JlcXVlc3Rl
ZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9uKGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcykKICAgICAgICAgJiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uob3Bl
bmVyVXJsLnN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihzZXNzaW9uSUQsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3Bl
bmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIFJlbWVt
YmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMgc2luY2UgdGhleSBkb24ndCBuZWVk
IHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJEb2N1bWVudC5zZXRIYXNSZXF1ZXN0ZWRQ
YWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MpOwpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29u
c3QKIAogICAgIC8vIFdlIG5vdGlmeSByaWdodCBhd2F5IGluIGNhc2Ugb2YgYSB1c2VyIGludGVy
YWN0aW9uIGluc3RlYWQgb2Ygd2FpdGluZyB0aGUgdXN1YWwgNSBzZWNvbmRzIGJlY2F1c2Ugd2Ug
d2FudAogICAgIC8vIHRvIHVwZGF0ZSBjb29raWUgYmxvY2tpbmcgc3RhdGUgYXMgcXVpY2tseSBh
cyBwb3NzaWJsZS4KLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkxvZ1VzZXJJbnRlcmFjdGlvbihkb2N1bWVudC5zZXNzaW9uSUQo
KSwgdG9wRnJhbWVEb21haW4pLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkxvZ1VzZXJJbnRlcmFjdGlvbih0b3BGcmFt
ZURvbWFpbiksIDApOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fc2hv
dWxkTG9nVXNlckludGVyYWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAppbmRleCBmNmM1NTdkNWYwZmQyMDFkYmI1MDUxMTQ3
ZWJjMjcwYTViNDVjZjNjLi4zYWI3OGU1MzlkN2VlZDliYzVjMjhhZjNlY2JjZWY1MGYwN2Y3YTZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVK
YXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUph
ci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiAgICAgU3Ry
aW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNl
OwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5zZXNzaW9uSUQoKSwgZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1
cmwpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9y
RE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAg
IGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkSW5j
bHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2Vj
dXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1
cm4gY29va2llU3RyaW5nOwpAQCAtNzQsMjIgKzc0LDIyIEBAIHZvaWQgV2ViQ29va2llSmFyOjpz
ZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsK
ICAgICB9CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LnNlc3Npb25JRCgpLCBk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVz
RnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9j
dW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKSwgMCk7CiB9CiAKIGJv
b2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYg
ZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNFbmFibGVkKGRvY3VtZW50LnNlc3Npb25JRCgpKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwg
MCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZCgpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFp
cjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJp
bmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAg
ICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb25JRCwgZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDAp
KQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nl
c3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IGNvb2tpZVN0cmlu
Zywgc2VjdXJlQ29va2llc0FjY2Vzc2VkID8gV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2Vk
OjpZZXMgOiBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiB9CkBAIC0xMDMs
MTQgKzEwMywxNCBAQCBib29sIFdlYkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdQogICAgICAgICBwYWdlSUQgPSBm
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CiAgICAgfQogCi0gICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpHZXRSYXdDb29raWVzKGRvY3VtZW50LnNlc3Npb25JRCgpLCBkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2ll
czo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViQ29va2llSmFyOjpkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKGRvY3Vt
ZW50LnNlc3Npb25JRCgpLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tp
ZSh1cmwsIGNvb2tpZU5hbWUpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNGNlMTAx
MjhhYzQwYmNmZGFiNWJkN2QwZmU0YjE4NjRlYzkyN2IzYS4uYjQ4NWM1NmI0MTE2YWYxYWVhNjYz
ODBiNzFiYTFkMTUyNDIzNzllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtMjgzLDkgKzI4Myw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0
RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dHJpCiAgICAgYXV0byBwb2xpY3lEb3dubG9hZElEID0gbV9wb2xpY3lEb3dubG9hZElEOwogICAg
IG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKIAotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBwYWdl
KCkgPyBwYWdlKCktPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKTsKLSAgICB3ZWJQcm9jZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
U3RhcnREb3dubG9hZChzZXNzaW9uSUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dl
c3RlZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwgcmVx
dWVzdCwgc3VnZ2VzdGVkTmFtZSksIDApOwogfQogCiB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0zMDcsNyArMzA1LDcgQEAgdm9p
ZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciwKICAgICBlbHNlCiAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyID0gMDsKIAotICAgIHdlYlByb2Nlc3MuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoc2Vzc2lvbklELCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgcmVz
cG9uc2UpLCAwKTsKKyAgICB3ZWJQcm9jZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSksIDApOwogfQog
CiB2b2lkIFdlYkZyYW1lOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIG1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dWludDY0X3QgcmVxdWVzdElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAxY2RjMGI2OWU4YTQzMjNiYjNhMGNlYjNlZWIyMDFlYjE1YjAyYmYz
Li5hOTNhNTgwYzQzMzMwOGY1N2YxYzc2YTM0ZWEzMjNkYmMxNTNmNzQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTMzOCw3ICsxMzM4LDcg
QEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCgpLCBtX2lkZW50aWZpZXIpLCAwKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MobV9pZGVu
dGlmaWVyKSwgMCk7CiAjZW5kaWYKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwpAQCAtNjUzNSwx
MiArNjUzNSwxMiBAQCB2b2lkIFdlYlBhZ2U6OmZyYW1lQmVjYW1lUmVtb3RlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBHbG9iYWxGcmFtZUlkZW50aWZpZXImJgogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiB2b2lkIFdlYlBhZ2U6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0
cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFt
ZURvbWFpbiwgV2ViRnJhbWUmIGZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpIYXNTdG9yYWdlQWNj
ZXNzKHNlc3Npb25JRCgpLCBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFt
ZURvbWFpbiksIGZyYW1lLmZyYW1lSUQoKSwgbV9pZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpIYXNTdG9yYWdlQWNjZXNzKFdURk1v
dmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWUuZnJhbWVJ
RCgpLCBtX2lkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJhbWUm
IGZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzcyhz
ZXNzaW9uSUQoKSwgV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21h
aW4pLCBmcmFtZS5mcmFtZUlEKCksIG1faWRlbnRpZmllciwgbV93ZWJQYWdlUHJveHlJZGVudGlm
aWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZy
YW1lID0gbWFrZVJlZihmcmFtZSksIHNlc3Npb25JRCA9IHNlc3Npb25JRCgpLCBwYWdlSUQgPSBt
X2lkZW50aWZpZXIsIGZyYW1lSUQgPSBmcmFtZS5mcmFtZUlEKCldKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBw
cm9tcHRXYXNTaG93bikgbXV0YWJsZSB7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9y
YWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWlu
KSwgZnJhbWUuZnJhbWVJRCgpLCBtX2lkZW50aWZpZXIsIG1fd2ViUGFnZVByb3h5SWRlbnRpZmll
ciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmcmFt
ZSA9IG1ha2VSZWYoZnJhbWUpLCBzZXNzaW9uSUQgPSBzZXNzaW9uSUQoKSwgcGFnZUlEID0gbV9p
ZGVudGlmaWVyLCBmcmFtZUlEID0gZnJhbWUuZnJhbWVJRCgpXShTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCB3YXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJv
bXB0V2FzU2hvd24pIG11dGFibGUgewogICAgICAgICBpZiAod2FzR3JhbnRlZCA9PSBTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZDo6WWVzKQogICAgICAgICAgICAgZnJhbWUtPmZyYW1lTG9hZGVyQ2xp
ZW50KCktPnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKHsgc2Vzc2lvbklELCBmcmFt
ZUlELCBwYWdlSUQgfSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWQsIHBy
b21wdFdhc1Nob3duKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCA5YjM0ZWMwNDZmNWYxODkwY2U5NmNkMjA4NmRjNjdmM2Y0ZjU3MWVmLi5lMjI5NTA3Mzg3ZGM1
MzdjMGY1ZTMyZmE3NTU0ZmRmYjZjNzQyMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC02NTEsNiArNjUxLDggQEAgV2ViUGFnZSogV2ViUHJvY2Vzczo6d2Vi
UGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiAKIHZvaWQgV2ViUHJvY2Vzczo6Y3Jl
YXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogeworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnNlc3Npb25JRCA9PSBz
ZXNzaW9uSUQoKSk7CisKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2Ug
ZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQK
ICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hy
b25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCiAgICAgYXV0byByZXN1
bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7CkBAIC02NjksNiArNjcxLDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYKIAogdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogeworICAg
IEFTU0VSVChzZXNzaW9uSUQgPT0gdGhpcy0+c2Vzc2lvbklEKCkpOwogICAgIEFTU0VSVChtX3Bh
Z2VNYXAuY29udGFpbnMocGFnZUlEKSk7CiAKICAgICBwYWdlV2lsbExlYXZlV2luZG93KHBhZ2VJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAyOTI4YzEwOTU0Yjdm
Y2NiZjkyMDU5NmEyMzY5Njc1YTY4NWY3ZDQ1Li4wNGYzYmVlZjdkYzQyM2ViNzRlMDUzMWQ1ZmYw
MjNiMTE4NTQ2N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE2
Miw5ICsxNjIsNyBAQCBwdWJsaWM6CiAKICAgICBJbmplY3RlZEJ1bmRsZSogaW5qZWN0ZWRCdW5k
bGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9CiAgICAgCi0gICAg
Ly8gUHJld2FybWVkIFdlYlByb2Nlc3NlcyBkbyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHNlc3Np
b25JRCB5ZXQsIHdoaWNoIGlzIHdoeSB0aGlzIGlzIGFuIG9wdGlvbmFsLgotICAgIC8vIEJ5IHRo
ZSB0aW1lIHRoZSBXZWJQcm9jZXNzIGdldHMgYSBXZWJQYWdlLCBpdCBpcyBndWFyYW50ZWVkIHRv
IGhhdmUgYSBzZXNzaW9uSUQuCi0gICAgY29uc3QgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+JiBz
ZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgQVNTRVJUKG1fc2Vzc2lvbklEKTsgcmV0dXJuICptX3Nl
c3Npb25JRDsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0JiBjb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQoKSBjb25zdCB7IHJldHVybiBtX2Nv
bXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydDsgfQpAQCAtNTc0LDYgKzU3Miw5IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJl
YU1hcCo+IG1fc3RvcmFnZUFyZWFNYXBzOworICAgIAorICAgIC8vIFByZXdhcm1lZCBXZWJQcm9j
ZXNzZXMgZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3
aHkgdGhpcyBpcyBhbiBvcHRpb25hbC4KKyAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2Vz
cyBnZXRzIGEgV2ViUGFnZSwgaXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgog
ICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378780</attachid>
            <date>2019-09-13 20:54:03 -0700</date>
            <delta_ts>2019-09-13 21:08:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201789-20190913205340.patch</filename>
            <type>text/plain</type>
            <size>95803</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmU3ZDgzYTBiYTM3M2U0
YjcyNWNjMTNmYTE0YjIxOThiMmE5NjUuLjE3ZjQ0NmY3MTM2NDAyN2I2NzYwZTI5ZDllYzlmZThk
ZjU0ZWMwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEzIEBACisyMDE5LTA5LTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRo
ZSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vz
c2lvbiBwZXIgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAxNzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRoZSBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgQXMgYSByZXN1bHQsIHdlIG5vIGxvbmdlciBuZWVkIHRvIHBhc3MgdGhlIHNlc3Npb25J
RCBpbiBlYWNoIElQQyBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZQorICAgICAgICBOZXR3b3Jr
UHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRD
aGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRy
YWNraW5nUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vzc2lvbklEIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0
YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1
bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpibG9iU2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0Ns
aWVudENvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJv
bVBhcmVudDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsQ2hhbmdlRG9jdW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25X
aXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpzZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmRlbGV0ZUNvb2tpZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnNlc3Npb25JRCBjb25zdCk6CisKIDIwMTktMDktMTEgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIEFSIFF1aWNrTG9v
ayB0byB0cmlnZ2VyIHByb2Nlc3NpbmcgaW4gdGhlIG9yaWdpbmF0aW5nIHBhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjBjMmVmNzc4MWZmODAzMjcyMzljOThjZjVjYzRiMDli
OGZmYWZkZC4uODYzN2QyZjRiNmFhZDRlYzBhNTYxNDI3MGYxM2RlYjI5ZDUyMGQxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc2LDE0ICs3NiwxNSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK1JlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIGNv
bm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MobmV0d29ya1Byb2Nlc3MsIHdlYlByb2Nlc3NJZGVudGlmaWVy
LCBzZXNzaW9uSUQsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKLU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCitOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiAg
ICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgICwgbV9tZG5zUmVnaXN0ZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTExMyw3ICsx
MTQsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CisgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwogI2VuZGlmCiB9CiAKQEAgLTIwNCwxNyArMjA1LDE2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3dlYklE
QkNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV93ZWJJREJDb25uZWN0aW9ucy5lbmQoKSkKLSAgICAgICAgICAgIGl0ZXJh
dG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIGlmIChtX3dlYklEQkNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3dlYklEQkNvbm5lY3Rp
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgaWYgKG1fc3dDb25uZWN0
aW9uKQorICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTI2OSw4ICsyNjksOCBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOworICAgICAgICBpZiAo
bV9zd0Nvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtMzE0LDEzICszMTQsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBhdXRvIGlkYkNvbm5lY3Rp
b25zID0gc3RkOjpleGNoYW5nZShtX3dlYklEQkNvbm5lY3Rpb25zLCB7IH0pOwotICAgIGZvciAo
YXV0byYgY29ubmVjdGlvbiA6IGlkYkNvbm5lY3Rpb25zLnZhbHVlcygpKQotICAgICAgICBjb25u
ZWN0aW9uLT5kaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOworICAgIGlmIChhdXRvIGlkYkNv
bm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCQ29ubmVjdGlvbiwgeyB9KSkKKyAgICAg
ICAgaWRiQ29ubmVjdGlvbi0+ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1bnJlZ2lzdGVyU1dDb25uZWN0
aW9ucygpOworICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCkBAIC0zMzIsMjAgKzMzMSwyMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSQogewogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiB1cmwsIFN0
cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
IW1fbmV0d29ya1NvY2tldFN0cmVhbXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIFdlYkNv
cmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiB0b2tlbiA9IHsgfTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+c291cmNlQXBwbGljYXRp
b25BdWRpdERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5zZXQo
aWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCksIFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmll
ciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0
cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdv
cmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHVybCksIG1fc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlv
biwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtTb2NrZXRDaGFubmVscy5jb250YWlucyhpZGVu
dGlmaWVyKSk7Ci0gICAgaWYgKGF1dG8gY2hhbm5lbCA9IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpj
cmVhdGUoKnRoaXMsIHNlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQor
ICAgIGlmIChhdXRvIGNoYW5uZWwgPSBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKCp0aGlz
LCBtX3Nlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQogICAgICAgICBt
X25ldHdvcmtTb2NrZXRDaGFubmVscy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjaGFubmVsKSk7
CiB9CiAKQEAgLTM3NCw5ICszNzMsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZW5kU3VzcGVuc2lvbigpCiAjZW5kaWYKIH0KIAorTmV0d29ya1Nlc3Npb24qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpuZXR3b3JrU2Vzc2lvbigpCit7CisgICAgcmV0dXJu
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24obV9zZXNzaW9uSUQpOworfQorCiBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApAQCAtNDkwLDMxICs0OTQsMzEgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVj
b25uZWN0aW8KICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGlkRmluaXNoUHJlY29ubmVjdGlvbihwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpLCAwKTsKIH0KIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oY29uc3QgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbigpCiB7Ci0gICAgaWYgKHNlc3Npb25JRCAhPSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgaWYgKG1fc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Mo
KS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCkpCiAgICAgICAgICAgICByZXR1cm4gKnN0b3Jh
Z2VTZXNzaW9uOwogCiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dz
aW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3
b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgogICAgICAgICAvLyBG
SVhNRTogRmluZCBhIHdheSB0byB0cmFjayBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb25zIG1vcmUg
cmlnb3JvdXNseS4KICAgICAgICAgTE9HX0VSUk9SKCJOb24tZGVmYXVsdCBzdG9yYWdlIHNlc3Np
b24gd2FzIHJlcXVlc3RlZCwgYnV0IHRoZXJlIHdhcyBubyBzZXNzaW9uIGZvciBpdC4gUGxlYXNl
IGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0IGRpc2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGlu
IHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3RlZCByYWNlLiIpOwogICAgIH0KLSAgICByZXR1cm4g
bmV0d29ya1Byb2Nlc3MuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgcmV0dXJuIG5ldHdv
cmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewot
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vz
c2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8v
IEluIGNhc2UgYSByZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBzZXJ2aWNlIHdvcmtlciwgd2UgZG8g
bm90IGhhdmUgeWV0IHRoZSBhYmlsaXR5IHRvIGNvbnZlcnQgdGhlIGxvYWQuCiAgICAgaWYgKCFt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpIHsKLSAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2Fk
SUQsIHJlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIo
KS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTI3LDEyICs1MzEsMTIgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2kKICAgICBsb2FkZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVl
c3QsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CisgICAgYXV0byYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBhdXRvIHJlc3Vs
dCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
KSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkK
ICAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24o
KnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24s
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBw
YWdlSUQsIFdURjo6bnVsbG9wdCk7CiAgICAgfQpAQCAtNTQwLDEwNCArNTQ0LDEwNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKIHsKLSAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCiAgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyksIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKICAg
ICB9CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZXNFbmFibGVkKCkpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKCkuY29va2llc0VuYWJsZWQoKSk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lv
bihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKCkuY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IHJlc3VsdDsKLSAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBz
ZXNzaW9uSUQpLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKKyAgICBzdG9yYWdlU2Vzc2lvbigpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsK
KyAgICBzdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIHNlc3Npb24t
PmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5cGUpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJs
b2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lv
bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNV
UkwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxG
cm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
ZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoLCBudWxscHRyKSwgY29udGVu
dFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5k
KQogewotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CiAgICAg
aWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlm
ICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uID8gc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
YmxvYlNpemUodXJsKSA6IDApOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKQEAgLTY2NywyMSArNjcxLDIxIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShmcmFtZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7Ci0gICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3Rv
cmFnZVNlc3Npb24obV9zZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Y2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdlSUQpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewog
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBbXSB7IH0pOwogICAgIH0KQEAgLTY5
Nyw5ICs3MDEsOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYQogICAgIH0KIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzA5LDkgKzcxMyw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHBy
b21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nl
c3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpIHsKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9y
YWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgd2ViUGFn
ZUlELCB3ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzIxLDkgKzcyNSw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
OlllcywgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVy
UGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5y
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzKSwgb3BlbmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikpOwogICAgIH0K
QEAgLTc0NSw5ICs3NDksOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJj
ZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291
cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9u
SUQpCitPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJj
ZSkKIHsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgaWYgKG1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAv
LyBFaXRoZXIgZ2V0IHRoZSBleGlzdGluZyByb290IGFjdGl2aXR5IHRyYWNrZXIgZm9yIHRoaXMg
cGFnZSBvciBjcmVhdGUgYQpAQCAtODQxLDM4ICs4NDUsMzUgQEAgc2l6ZV90IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNvdXJjZUxv
YWRJZGUKIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIgLSAlIiBQUkl1NjQsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKLSAgICBBU1NFUlQoIW1f
d2ViSURCQ29ubmVjdGlvbnMuY29udGFpbnMoc2Vzc2lvbklELnRvVUludDY0KCkpKTsKKyAgICBM
T0coSW5kZXhlZERCLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaElE
QkNvbm5lY3Rpb25Ub1NlcnZlciAtICUiIFBSSXU2NCwgbV9zZXNzaW9uSUQudG9VSW50NjQoKSk7
CisgICAgQVNTRVJUKCFtX3dlYklEQkNvbm5lY3Rpb24pOwogICAgIAotICAgIG1fd2ViSURCQ29u
bmVjdGlvbnMuYWRkKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCkpOworICAgIG1fd2ViSURCQ29ubmVjdGlvbiA9IFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3MsIG1fY29ubmVj
dGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciwgbV9zZXNzaW9uSUQpOwogfQogI2Vu
ZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCiB7Ci0gICAg
YXV0byBzd0Nvbm5lY3Rpb25zID0gV1RGTW92ZShtX3N3Q29ubmVjdGlvbnMpOwotICAgIGZvciAo
YXV0byYgc3dDb25uZWN0aW9uIDogc3dDb25uZWN0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc3dDb25uZWN0aW9uKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5zZXJ2ZXIoKS5yZW1v
dmVDb25uZWN0aW9uKHN3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgaWYg
KG1fc3dDb25uZWN0aW9uKQorICAgICAgICBtX3N3Q29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3Zl
Q29ubmVjdGlvbihtX3N3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiB7Ci0gICAgYXV0byYgc2VydmVyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0
byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29y
a1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3
U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwg
bV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLCBtX3Nlc3Npb25JRCk7
CiAKLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAg
ICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlc3Npb25JRCwgbWFrZVdlYWtQdHIoKmNvbm5lY3Rpb24p
KTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uKTsKKyAgICBtX3N3Q29ubmVjdGlvbiA9IG1h
a2VXZWFrUHRyKCpjb25uZWN0aW9uKTsKICAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3Zl
KGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZlciA9IG1f
bmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3RzKHNlc3Npb25JRCkpCisg
ICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lv
bklmRXhpc3RzKG1fc2Vzc2lvbklEKSkKICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0g
bWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nl
c3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0
KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWZiMGM5Y2QzNDE2
N2I2ZGNjYjBjOTE5ZWI2Y2RlMzQyODdmNWJmZS4uODgyNDFlM2RlZWIwZDM2MTgxMTI1ZTVmNTc4
MGNhM2I1YmIyZDgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtODQsOCArODQsMTEg
QEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHB1YmxpYzoKICAgICB1c2lu
ZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogCi0gICAg
c3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBOZXR3b3JrU2Vz
c2lvbiogbmV0d29ya1Nlc3Npb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KQEAgLTE0
MCw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmV0d29ya0xvYWRJbmZvcm1hdGlvbkJ5
SUQucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNv
dXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3Vy
Y2UpOwogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKQEAgLTE1Miw5ICsxNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6SGFzQWN0aXZpdHkpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRG
aW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwpAQCAtMTc2LDQwICsxODAsNDAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQg
cGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lID0geyB9KTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgIHZvaWQgY29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwot
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgZW5kKTsKLSAgICB2b2lkIGJsb2JTaXplKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7Ci0gICAgdm9pZCB3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKKyAg
ICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgdm9pZCBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0Vu
YWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIGdldFJhd0Nv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGlu
dDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIAotICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFt
KFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7
CisgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgdWludDY0X3QpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
dWludDY0X3QgaWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICAvLyBNZXNzYWdlcyBoYW5kbGVycyAoTW9kZXJuIElEQikuCi0gICAgdm9pZCBlc3RhYmxpc2hJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNo
SURCQ29ubmVjdGlvblRvU2VydmVyKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCk7Ci0gICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTV0Nv
bm5lY3Rpb25zKCk7CisgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKKyAg
ICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAog
ICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydDIpOwpAQCAtMjMxLDE0ICsyMzUsMTQgQEAgcHJpdmF0ZToKICAgICBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFy
UGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNzaW9uUmVzb3VyY2VMb2Fk
RGF0YSYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CisgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTI4MiwxMCArMjg2LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAogICAgIElQQzo6Q29ubmVj
dGlvbiogcGF5bWVudENvb3JkaW5hdG9yQ29ubmVjdGlvbihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIGZpbmFsOwogICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGlu
YXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFM
OjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9y
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZp
bmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5
cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyAgICBjb25zdCBT
dHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQ
YXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1l
c3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKICAgICB2b2lkIHBh
eW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CkBAIC0yOTMsNiAr
Mjk3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8TmV0
d29ya1NvY2tldFN0cmVhbT4+IG1fbmV0d29ya1NvY2tldFN0cmVhbXM7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPj4gbV9uZXR3b3Jr
U29ja2V0Q2hhbm5lbHM7CkBAIC0zMTUsMTEgKzMyMCwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Pj4gbV93ZWJJREJDb25uZWN0aW9uczsKKyAgICBS
ZWZQdHI8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX3dlYklEQkNvbm5lY3Rpb247CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAg
ICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRD
b25uZWN0aW9uOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGQxMzU0YTI1YzIwNzg4MDMyNzMyZDRkNjdlY2I0NTMwODRmMWJkOTYuLjky
MDViYmYxOWVjYjkwYjJlODg0ODQ2MDcxYzJkNzA4NzgxNjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzEsMzggKzMxLDQxIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQ
cmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAgICAgUHJlY29ubmVjdFRvKHVpbnQ2NF90IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQotICAgIENvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpCisgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0
ZWROYW1lKQorICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5nIGNvb2tpZVN0cmluZykKLSAg
ICBDb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGVuYWJs
ZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKSBTeW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgRGVsZXRlQ29va2llKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAg
Q29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNFbmFibGVk
KCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpi
b29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAt
PiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5j
aHJvbm91cworICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91
cworICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAotICAgIFJl
Z2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxl
LCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMs
IFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgVVJMIHNyY1VSTCkKLSAgICBSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmws
IFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQot
ICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
IHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKQotICAgIEJsb2JT
aXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3Vs
dFNpemUpIFN5bmNocm9ub3VzCi0gICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxT
dHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmws
IFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25I
YW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkK
KyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3Ry
aW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBl
bmQpCisgICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAgICBCbG9iU2l6ZShVUkwgdXJs
KSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKKyAgICBXcml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+
IGZpbGVOYW1lcykgQXN5bmMKIAogICAgIFNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCi0gICAgQ3JlYXRlU29ja2V0U3RyZWFtKFVSTCB1cmws
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRf
dCBpZGVudGlmaWVyKQotICAgIENyZWF0ZVNvY2tldENoYW5uZWwoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3RvY29s
LCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIENyZWF0ZVNvY2tldFN0cmVhbShVUkwgdXJsLCBT
dHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgQ3JlYXRlU29j
a2V0Q2hhbm5lbChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKTsKLSAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCisgICAgUmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOworICAgIENsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KTsKKyAgICBMb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQorICAgIAorICAgICMgRklYTUU6IFN0b3AgcGFzc2luZyBzZXNzaW9uSURzLgogICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9u
SUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+IHN0YXRpc3RpY3Mp
Ci0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2Vzcykg
QXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCi0gICAgUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBvcGVuZXJEb21haW4pCisKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BG
cmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4g
KGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBl
bnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKICNlbmRpZgogCiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
U3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBk
ZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtNzUs
MTIgKzc4LDEyIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBUYWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3ModWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyBuZXR3b3JrTWV0cmljcykgU3luY2hyb25vdXMKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotICAgIEVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKCkKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgRXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQorICAgIEVz
dGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQogI2VuZGlmCiAKICAgICBDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MSwgc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBwb3J0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTkxZjFiM2Y4MTNiZTZmMWQ0MDg4MmVjMjNhMjk0
ZjQ4MTNhYjNmYi4uM2ZmNmU5ZDM4NjVjODdhMDdhNGFiNDBiNTMzMDVjODIxNDEzNzk2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIsIElQQzo6QXR0YWNobWVudD4+CiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBpcGNDb25uZWN0aW9uID0gY3JlYXRlSVBDQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIG5ld0Nvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRl
KCp0aGlzLCBpZGVudGlmaWVyLCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CisgICAgYXV0byBuZXdD
b25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywg
aWRlbnRpZmllciwgc2Vzc2lvbklELCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CiAgICAgYXV0byYg
Y29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb24uZ2V0KCk7CiAKICAgICBBU1NFUlQoIW1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwZWRmMWQ1MGFjM2M5Y2U2MjY1
NTVlNTdhMzg5ZTg5OTgxMmNkNzdhLi5lYjk4NDJkMTdhZmNlMzUxNzk0ZTNhYTU0ZjFmNjM5MmJl
OGE5YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0zODgsNyArMzg4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJz
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYm
KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGEzZjdlYTMyNjRh
ZmYwMWQ4NmNkMDc5MmIxMTc1NTQzM2FlZjJkMDYuLjczOGQ3MGFmOWFmZDQwZWY4NjQ4YmU3ODA0
NjVlYmQ0OTU3NzY2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
IHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9u
IGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wg
aWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU4NGI3NjkwMGJjZDMxZjQxZjRlZDEy
MTQ1MmJlNzZmODQ4NWE1YjIuLmNkZTlmMjA1YTk1NThlZDg5ZGQ3MDc4ZGVmNGQzN2Q3NmRjOWMy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdS
ZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIHNlc3Npb25JRCgpKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNl
KCkpOwogCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAgIG1fd2FzU3RhcnRlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1MWIzZTkwODA2NmU1ZjhjNDFlZDgwMWY2MWFlOWIxMDE3
ZGY0ODVjLi44NTFiNTgwODNkZjgyOWJiOWNmMDc5Yzk1NzZmMTI3ZDQzNTEyMGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2NlcwogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24odWlu
dDY0X3QgY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm94eSkKIHsKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpIH0sIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3
ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25u
ZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwg
d2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkp
LCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmll
cikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQz
YzgyZjA0Njg0OGM4Y2QwNTliYzI1NjliZjRjYTI5M2E0ZmYxNGEuLjVkNjNkNDUzODEzNzUzNTVi
NjU5NDJhYjM2MTVmMjYwMDg1YzhmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ3Niw2ICsxNDc2LDEyIEBAIFdlYlByb2Nlc3NQb29sJiBX
ZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NQb29sKCkgY29uc3QKICAgICByZXR1cm4gKm1fcHJvY2Vz
c1Bvb2wuZ2V0KCk7CiB9CiAKK1BBTDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQcm94eTo6c2Vzc2lv
bklEKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICByZXR1
cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKK30KKwogI2lmIFBMQVRGT1JNKFdB
VENIT1MpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAppbmRleCA1ZDQzNWJmM2U4ZDBjNmYxMTQ5OTQ5MjEwYTQzMmViYmEyZTZmMjdiLi4y
N2Y2YjM2MThmMzlhNDAyMDExODA0MGVmN2ZlNzYyMDQzOTBiYWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoK
IAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VS
VChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAg
IHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgCisgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzRm9ySWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7
CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4
IDZjMmYxM2QwNjYwNTU3NmIzYWE4YjU0OTNhZWY5NzUzMThmY2QzOTQuLjk3MzNhNjMwZjI3ZTFj
MjA0MzU2Njg5YWYwNzI1MGQ5YmUxYmUyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlcihJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKCp0aGlzKSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJs
aXNoSURCQ29ubmVjdGlvblRvU2VydmVyKHNlc3Npb25JRCksIDApOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hJREJDb25uZWN0aW9u
VG9TZXJ2ZXIoKSwgMCk7CiB9CiAKIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6fldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggNzgxMTIwNzc4NGFmNjBhMmFkZWM1
NmNhYTU4NjRhNzFiM2FkMTIzYy4uNjZmNDQyYzI5Zjk5NzQxZTRlMTY1Y2RkYTkxMjhiOGY2OTVl
MTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVn
aXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBm
aWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBleHRlbnNpb25IYW5kbGU7CiAKQEAgLTQ0LDM5ICs0NCwzOSBAQCB2b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVVJMJgogICAgIGlmICghZmlsZS0+cGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUtPnBhdGgoKSwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHksIGV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVy
RmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGZpbGUtPnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxl
LCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIGZpbGUt
PnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJs
b2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9i
UGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JV
Ukwoc2Vzc2lvbklELCB1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
Z2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9p
ZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9pZCBCbG9iUmVnaXN0
cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGcm9tVVJMIHsgc2Vz
c2lvbklELCB1cmwsIHNyY1VSTCB9LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwg
eyB1cmwsIHNyY1VSTCB9LCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQg
QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxX
ZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoZmlsZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBmaWxlLT5wYXRoKCksIGNv
bnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCh1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lk
IEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3Rl
ckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdp
c3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJM
KHVybCksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxG
b3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVn
aXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
ZW5kKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uoc2Vzc2lvbklELCB1cmwsIHNy
Y1VSTCwgc3RhcnQsIGVuZCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJs
LCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIEJsb2JS
ZWdpc3RyeVByb3h5OjpibG9iU2l6ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgdXJsKQordW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgdWludDY0X3QgcmVzdWx0U2l6
ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplKHNlc3Npb25JRCwgdXJsKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZTo6UmVwbHkocmVzdWx0U2l6ZSks
IDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6QmxvYlNpemUodXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZTo6UmVwbHkocmVzdWx0U2l6ZSksIDApKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gcmVzdWx0U2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDg3ODAwNmVkOTUzMTIwMDQzY2E5ZjA5M2VhYWRlYzcwNmMzNGIxOTQu
LmUxOGYwYWU3OGYyZTYyNTdmZDgyNDY5OTUzZmUzMjQ1NjNlYTlkNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcApAQCAtMjEwLDkgKzIxMCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
CiB7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQ
YXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNlc3Npb25JRCwgYmxvYlVSTHMpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkRmluaXNoUGluZ0xvYWQodWlu
dDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiYgZXJyb3IsIFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSkKQEAgLTI2MCw4ICsyNjAsOCBAQCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXImIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6aWRiQ29ubmVjdGlvblRvU2VydmVy
Rm9yU2VzcwogV2ViU1dDbGllbnRDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIHJldHVybiAqbV9z
d0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmVuc3VyZShzZXNzaW9uSUQsIFtzZXNzaW9uSURdIHsKLSAg
ICAgICAgcmV0dXJuIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y3JlYXRlKHNlc3Npb25JRCk7Cisg
ICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZW5zdXJlKHNlc3Npb25JRCwgW10g
eworICAgICAgICByZXR1cm4gV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUoKTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXgg
MmI0ZWExYTc5NGRhZTkzZTgzYjgxNDVhNTAxYjhjYTMzNDJhZGI5Ni4uZTg4NDlmZWMxN2JhMDY4
MmViYmRhNGQzZGY4OTcxYjZkMWUxOTRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTEw
OSw2ICsxMDksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgc2luZ2xlIGNvbm5lY3Rpb24uCiAg
ICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4+
IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbjsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggM2U3
OWY5YTdlMTRlNWExODIyZjZiNGU2ZDVlYzJiZDdkYjM2MjM2ZC4uY2M3ZWM0MmVmMTViMWUzMTJi
MjQ0Mzc4YzYzNjFkMGMxZTg2YTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBX
ZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3Qo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgaWYgKHJlcXVlc3QtPnVybCgpICE9IHVybCAmJiBt
X2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZFVwZ3JhZGVVUkwoKTsKIAotICAgIE1lc3Nh
Z2VTZW5kZXI6OnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
cmVhdGVTb2NrZXRDaGFubmVsIHsgbV9kb2N1bWVudC0+c2Vzc2lvbklEKCksICpyZXF1ZXN0LCBw
cm90b2NvbCwgaWRlbnRpZmllcigpIH0pOworICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVsIHsg
KnJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKCkgfSk7CiAgICAgcmV0dXJuIENvbm5lY3RT
dGF0dXM6Ok9LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCAxZmI2OTYxZmZmMGJhZDYzMWRlMTA5MmMwNGNm
MjY4ZTJjMjc4YzRjLi4zY2E5MDA0MmI3NTI3OWJmMzkxYmM1MzJhZDE5MWIyNmJlYTYzODQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHAKQEAgLTgyLDExICs4MiwxMSBAQCBSZWY8V2ViU29ja2V0U3RyZWFtPiBXZWJTb2Nr
ZXRTdHJlYW06OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQwogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldFN0cmVhbSh1cmwsIGNsaWVudCwgc2Vzc2lv
bklELCBjcmVkZW50aWFsUGFydGl0aW9uKSk7CiB9CiAKLVdlYlNvY2tldFN0cmVhbTo6V2ViU29j
a2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hl
UGFydGl0aW9uKQorV2ViU29ja2V0U3RyZWFtOjpXZWJTb2NrZXRTdHJlYW0oY29uc3QgVVJMJiB1
cmwsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikKICAgICA6IFNvY2tldFN0cmVhbUhh
bmRsZSh1cmwsIGNsaWVudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0
ZVNvY2tldFN0cmVhbSh1cmwsIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIo
KSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q3JlYXRlU29ja2V0U3RyZWFtKHVybCwgY2FjaGVQYXJ0aXRpb24sIGlk
ZW50aWZpZXIoKSksIDApOwogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsV2ViU29ja2V0
U3RyZWFtTWFwTG9jayk7CiAgICAgQVNTRVJUKCFnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5j
b250YWlucyhpZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGE4YWE2Nzk2
MjI5MmFhOGEyM2NmYTY2OGI5ZjY3ZjVkMzQ3NDc3MDkuLjA2YTRjYzdkYjdhMThjMTE4N2JhZmM2
NTg4NTU0MzJjNDVlYjJhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtNTUsMTMgKzU1LDEx
IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogCi1X
ZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbihTZXNzaW9uSUQgc2Vz
c2lvbklEKQotICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9pZGVudGlmaWVy
KFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKK1dlYlNXQ2xpZW50Q29ubmVjdGlvbjo6V2ViU1dDbGll
bnRDb25uZWN0aW9uKCkKKyAgICA6IG1faWRlbnRpZmllcihQcm9jZXNzOjppZGVudGlmaWVyKCkp
CiAgICAgLCBtX3N3T3JpZ2luVGFibGUobWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigp
KQogewotICAgIEFTU0VSVChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24geyBzZXNzaW9uSUQgfSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbiB7IH0pOwogfQogCiBX
ZWJTV0NsaWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaAppbmRleCBlZmVmMzZiY2FjZDI4NTQ1N2JlMDE0ZjhkNGNiYzlkYTY5OWMyZjhiLi4yN2Zl
YTJjMWIyNGI4YzJhOTY0YzRlOTY3ZDNmN2VjYTM4ZDAzNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXQ2xp
ZW50Q29ubmVjdGlvbi5oPgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDcgKzQ4LDcgQEAg
Y2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOwogCiBjbGFzcyBXZWJTV0NsaWVudENvbm5l
Y3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uLCBwcml2YXRl
IElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4gY3JlYXRlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5l
Y3Rpb24geyBzZXNzaW9uSUQgfSk7IH0KKyAgICBzdGF0aWMgUmVmPFdlYlNXQ2xpZW50Q29ubmVj
dGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5lY3Rp
b24pOyB9CiAgICAgfldlYlNXQ2xpZW50Q29ubmVjdGlvbigpOwogCiAgICAgV2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQpAQCAtNjksMTAgKzY4LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0KIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBXZWJTV0NsaWVudENvbm5l
Y3Rpb24oKTsKIAogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3Jp
cHRJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5h
bDsKQEAgLTk4LDE0ICs5NSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuT3JEZWxheVRhc2tG
b3JJbXBvcnQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spOwogCiAgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9u
SUQudG9VSW50NjQoKTsgfQorICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogCiAgICAgdm9pZCBzZXRTV09yaWdpblRhYmxl
U2hhcmVkTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJik7CiAgICAgdm9pZCBzZXRT
V09yaWdpblRhYmxlSXNJbXBvcnRlZCgpOwogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICBVbmlxdWVSZWY8V2ViU1dPcmlnaW5UYWJs
ZT4gbV9zd09yaWdpblRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmlu
ZGV4IGU4OWQwYjM3ZGU4OTEyMGU2NDNiNDczMTc0MWQyOGExMTYzODZhOWQuLmU2MzNjNzdjNzFm
MGIwZWY3NTQ5NWQxMDQyNjYyMmQ5OTNkMjM2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbgog
I2VuZGlmCiB7CiAgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdG9yZSk7Ci0gICAgbV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxl
RG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlz
aFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIDApOwogfQogCiBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODMw
ZTVjODE1ZmE0ODRlM2M3ZjEyN2NjMmU0ZWUzMTFjNDk0ZDEwMy4uYzU0ZjdkZjkxZjJkNWY0NWUw
ZTA3ZjA5MWVjMWIwOWE1YzU5MWU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRG
cm9tUGFyZW50MigpCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBp
ZiAobV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIpIHsKICAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoCi0gICAgICAgICAgICBtX2ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzSWRlbnRpZmllci0+c2Vzc2lvbklELCBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lk
ZW50aWZpZXItPnBhZ2VJRCksIDApOworICAgICAgICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFn
ZUFjY2Vzc0lkZW50aWZpZXItPmZyYW1lSUQsIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJ
ZGVudGlmaWVyLT5wYWdlSUQpLCAwKTsKICAgICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFj
Y2Vzc0lkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CiAgICAgfQogI2VuZGlmCkBAIC00MjUsNyAr
NDI1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2hhbmdlRG9j
dW1lbnQoY29uc3QgVVJMJiBjdXJyZW50VXJsLCBjb24KIAogICAgIGlmIChtX2ZyYW1lU3BlY2lm
aWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciAmJiAhV2ViQ29yZTo6YXJlUmVnaXN0cmFibGVEb21h
aW5zRXF1YWwoY3VycmVudFVybCwgbmV3VXJsKSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW92ZVN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZSgKLSAgICAgICAgICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJ
ZGVudGlmaWVyLT5zZXNzaW9uSUQsIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlm
aWVyLT5mcmFtZUlELCBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+cGFn
ZUlEKSwgMCk7CisgICAgICAgICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRp
Zmllci0+ZnJhbWVJRCwgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnBh
Z2VJRCksIDApOwogICAgICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmll
ciA9IFdURjo6bnVsbG9wdDsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuY3BwCmluZGV4IDVmYjNjZjIwOWEzZTZjMWJlMzkwZGJmOGVhZDkwNDNmZTQzYTE0
NDUuLmUxYjRiOWViM2YzODRmNWY1ZmYyOTEzMWE5M2M4ZmQ2ZGYwYzA2NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNTksMTQgKzU5LDE0IEBAIFdlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3Vt
ZW50JiBvcGVuZXJEb2N1bWVudCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9w
ZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQogewogICAgIGF1dG8gb3BlbmVy
VXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7CiAgICAgUmVnaXN0cmFibGVEb21haW4gb3BlbmVy
RG9tYWluIHsgb3BlbmVyVXJsIH07CiAgICAgaWYgKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyAhPSBvcGVuZXJEb21haW4KICAgICAgICAgJiYgIW9wZW5lckRvY3VtZW50Lmhhc1JlcXVlc3Rl
ZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9uKGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcykKICAgICAgICAgJiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uob3Bl
bmVyVXJsLnN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihzZXNzaW9uSUQsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3Bl
bmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIFJlbWVt
YmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMgc2luY2UgdGhleSBkb24ndCBuZWVk
IHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJEb2N1bWVudC5zZXRIYXNSZXF1ZXN0ZWRQ
YWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MpOwpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29u
c3QKIAogICAgIC8vIFdlIG5vdGlmeSByaWdodCBhd2F5IGluIGNhc2Ugb2YgYSB1c2VyIGludGVy
YWN0aW9uIGluc3RlYWQgb2Ygd2FpdGluZyB0aGUgdXN1YWwgNSBzZWNvbmRzIGJlY2F1c2Ugd2Ug
d2FudAogICAgIC8vIHRvIHVwZGF0ZSBjb29raWUgYmxvY2tpbmcgc3RhdGUgYXMgcXVpY2tseSBh
cyBwb3NzaWJsZS4KLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkxvZ1VzZXJJbnRlcmFjdGlvbihkb2N1bWVudC5zZXNzaW9uSUQo
KSwgdG9wRnJhbWVEb21haW4pLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkxvZ1VzZXJJbnRlcmFjdGlvbih0b3BGcmFt
ZURvbWFpbiksIDApOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fc2hv
dWxkTG9nVXNlckludGVyYWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAppbmRleCBmNmM1NTdkNWYwZmQyMDFkYmI1MDUxMTQ3
ZWJjMjcwYTViNDVjZjNjLi4zYWI3OGU1MzlkN2VlZDliYzVjMjhhZjNlY2JjZWY1MGYwN2Y3YTZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVK
YXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUph
ci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiAgICAgU3Ry
aW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNl
OwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5zZXNzaW9uSUQoKSwgZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1
cmwpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9y
RE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAg
IGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkSW5j
bHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2Vj
dXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1
cm4gY29va2llU3RyaW5nOwpAQCAtNzQsMjIgKzc0LDIyIEBAIHZvaWQgV2ViQ29va2llSmFyOjpz
ZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsK
ICAgICB9CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LnNlc3Npb25JRCgpLCBk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVz
RnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9j
dW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKSwgMCk7CiB9CiAKIGJv
b2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYg
ZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNFbmFibGVkKGRvY3VtZW50LnNlc3Npb25JRCgpKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwg
MCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZCgpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFp
cjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJp
bmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAg
ICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb25JRCwgZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDAp
KQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nl
c3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IGNvb2tpZVN0cmlu
Zywgc2VjdXJlQ29va2llc0FjY2Vzc2VkID8gV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2Vk
OjpZZXMgOiBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiB9CkBAIC0xMDMs
MTQgKzEwMywxNCBAQCBib29sIFdlYkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdQogICAgICAgICBwYWdlSUQgPSBm
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CiAgICAgfQogCi0gICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpHZXRSYXdDb29raWVzKGRvY3VtZW50LnNlc3Npb25JRCgpLCBkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2ll
czo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViQ29va2llSmFyOjpkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKGRvY3Vt
ZW50LnNlc3Npb25JRCgpLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tp
ZSh1cmwsIGNvb2tpZU5hbWUpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNGNlMTAx
MjhhYzQwYmNmZGFiNWJkN2QwZmU0YjE4NjRlYzkyN2IzYS4uYjQ4NWM1NmI0MTE2YWYxYWVhNjYz
ODBiNzFiYTFkMTUyNDIzNzllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtMjgzLDkgKzI4Myw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0
RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dHJpCiAgICAgYXV0byBwb2xpY3lEb3dubG9hZElEID0gbV9wb2xpY3lEb3dubG9hZElEOwogICAg
IG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKIAotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBwYWdl
KCkgPyBwYWdlKCktPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKTsKLSAgICB3ZWJQcm9jZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
U3RhcnREb3dubG9hZChzZXNzaW9uSUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dl
c3RlZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwgcmVx
dWVzdCwgc3VnZ2VzdGVkTmFtZSksIDApOwogfQogCiB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0zMDcsNyArMzA1LDcgQEAgdm9p
ZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciwKICAgICBlbHNlCiAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyID0gMDsKIAotICAgIHdlYlByb2Nlc3MuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoc2Vzc2lvbklELCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgcmVz
cG9uc2UpLCAwKTsKKyAgICB3ZWJQcm9jZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSksIDApOwogfQog
CiB2b2lkIFdlYkZyYW1lOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIG1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dWludDY0X3QgcmVxdWVzdElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAxY2RjMGI2OWU4YTQzMjNiYjNhMGNlYjNlZWIyMDFlYjE1YjAyYmYz
Li5hOTNhNTgwYzQzMzMwOGY1N2YxYzc2YTM0ZWEzMjNkYmMxNTNmNzQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTMzOCw3ICsxMzM4LDcg
QEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCgpLCBtX2lkZW50aWZpZXIpLCAwKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MobV9pZGVu
dGlmaWVyKSwgMCk7CiAjZW5kaWYKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwpAQCAtNjUzNSwx
MiArNjUzNSwxMiBAQCB2b2lkIFdlYlBhZ2U6OmZyYW1lQmVjYW1lUmVtb3RlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBHbG9iYWxGcmFtZUlkZW50aWZpZXImJgogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiB2b2lkIFdlYlBhZ2U6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0
cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFt
ZURvbWFpbiwgV2ViRnJhbWUmIGZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpIYXNTdG9yYWdlQWNj
ZXNzKHNlc3Npb25JRCgpLCBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFt
ZURvbWFpbiksIGZyYW1lLmZyYW1lSUQoKSwgbV9pZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpIYXNTdG9yYWdlQWNjZXNzKFdURk1v
dmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWUuZnJhbWVJ
RCgpLCBtX2lkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJhbWUm
IGZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzcyhz
ZXNzaW9uSUQoKSwgV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21h
aW4pLCBmcmFtZS5mcmFtZUlEKCksIG1faWRlbnRpZmllciwgbV93ZWJQYWdlUHJveHlJZGVudGlm
aWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZy
YW1lID0gbWFrZVJlZihmcmFtZSksIHNlc3Npb25JRCA9IHNlc3Npb25JRCgpLCBwYWdlSUQgPSBt
X2lkZW50aWZpZXIsIGZyYW1lSUQgPSBmcmFtZS5mcmFtZUlEKCldKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBw
cm9tcHRXYXNTaG93bikgbXV0YWJsZSB7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9y
YWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWlu
KSwgZnJhbWUuZnJhbWVJRCgpLCBtX2lkZW50aWZpZXIsIG1fd2ViUGFnZVByb3h5SWRlbnRpZmll
ciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmcmFt
ZSA9IG1ha2VSZWYoZnJhbWUpLCBzZXNzaW9uSUQgPSBzZXNzaW9uSUQoKSwgcGFnZUlEID0gbV9p
ZGVudGlmaWVyLCBmcmFtZUlEID0gZnJhbWUuZnJhbWVJRCgpXShTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCB3YXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJv
bXB0V2FzU2hvd24pIG11dGFibGUgewogICAgICAgICBpZiAod2FzR3JhbnRlZCA9PSBTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZDo6WWVzKQogICAgICAgICAgICAgZnJhbWUtPmZyYW1lTG9hZGVyQ2xp
ZW50KCktPnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKHsgc2Vzc2lvbklELCBmcmFt
ZUlELCBwYWdlSUQgfSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWQsIHBy
b21wdFdhc1Nob3duKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCA5YjM0ZWMwNDZmNWYxODkwY2U5NmNkMjA4NmRjNjdmM2Y0ZjU3MWVmLi5hMGYwMTliNzJmNTU4
MWUzOTY5YTA1NDBiYTYyN2I1ODFiZmUwM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0zOTEsOCArMzkxLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFs
aXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
IAogICAgIHNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcocGFyYW1ldGVycy5zaG91bGRVc2VGb250
U21vb3RoaW5nKTsKIAotICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwotCiAg
ICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsK
IAogICAgIHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKHBhcmFtZXRlcnMucGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luSGFzaGVzKTsKQEAgLTQ2Miw2ICs0NjAsOCBAQCB2b2lkIFdlYlByb2Nl
c3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJh
bWV0ZXJzJiYgcAogICAgICAgICBzdXBwbGVtZW50LT5zZXRXZWJzaXRlRGF0YVN0b3JlKHBhcmFt
ZXRlcnMpOwogCiAgICAgcGxhdGZvcm1TZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXVEZN
b3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAKKyAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzOjpoYXNQYWdlUmVxdWlyaW5nUGFnZUNhY2hlV2hp
bGVTdXNwZW5kZWQoKSBjb25zdApAQCAtNjUxLDYgKzY1MSw4IEBAIFdlYlBhZ2UqIFdlYlByb2Nl
c3M6OndlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogCiB2b2lkIFdlYlByb2Nl
c3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5zZXNzaW9u
SUQgPT0gc2Vzc2lvbklEKCkpOworCiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIGZv
ciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBhIHdpbmRvdy5vcGVuKCkgKG9yIHRh
cmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0cyBjcmVhdGVkIGJvdGggaW4gdGhl
IHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2ggdGhlIG5vcm1hbCB3YXkuIAogICAgIGF1
dG8gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOwpAQCAtNjY5LDYgKzY3
MSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3Zl
V2ViUGFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKKyAgICBBU1NFUlQoc2Vzc2lvbklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsKICAgICBBU1NF
UlQobV9wYWdlTWFwLmNvbnRhaW5zKHBhZ2VJRCkpOwogCiAgICAgcGFnZVdpbGxMZWF2ZVdpbmRv
dyhwYWdlSUQpOwpAQCAtMTE5MCw2ICsxMTkzLDcgQEAgc3RhdGljIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJgog
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBBU1NFUlQobV9zZXNzaW9uSUQpOwogCiAgICAgLy8gSWYgd2UndmUgbG9zdCBvdXIgY29u
bmVjdGlvbiB0byB0aGUgbmV0d29yayBwcm9jZXNzIChlLmcuIGl0IGNyYXNoZWQpIHRyeSB0byBy
ZS1lc3RhYmxpc2ggaXQuCiAgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMjkyOGMxMDk1NGI3ZmNjYmY5
MjA1OTZhMjM2OTY3NWE2ODVmN2Q0NS4uMDRmM2JlZWY3ZGM0MjNlYjc0ZTA1MzFkNWZmMDIzYjEx
ODU0NjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xNjIsOSAr
MTYyLDcgQEAgcHVibGljOgogCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQogICAgIAotICAgIC8vIFBy
ZXdhcm1lZCBXZWJQcm9jZXNzZXMgZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQg
eWV0LCB3aGljaCBpcyB3aHkgdGhpcyBpcyBhbiBvcHRpb25hbC4KLSAgICAvLyBCeSB0aGUgdGlt
ZSB0aGUgV2ViUHJvY2VzcyBnZXRzIGEgV2ViUGFnZSwgaXQgaXMgZ3VhcmFudGVlZCB0byBoYXZl
IGEgc2Vzc2lvbklELgotICAgIGNvbnN0IE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiYgc2Vzc2lv
bklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQoKSBjb25zdCB7IEFTU0VSVChtX3Nlc3Npb25JRCk7IHJldHVybiAqbV9zZXNzaW9u
SUQ7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdo
dCYgY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3Np
dGluZ1JlbmRlclNlcnZlclBvcnQ7IH0KQEAgLTU3NCw2ICs1NzIsOSBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICBIYXNoTWFwPFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFNYXAq
PiBtX3N0b3JhZ2VBcmVhTWFwczsKKyAgICAKKyAgICAvLyBQcmV3YXJtZWQgV2ViUHJvY2Vzc2Vz
IGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lvbklEIHlldCwgd2hpY2ggaXMgd2h5IHRo
aXMgaXMgYW4gb3B0aW9uYWwuCisgICAgLy8gQnkgdGhlIHRpbWUgdGhlIFdlYlByb2Nlc3MgZ2V0
cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhIHNlc3Npb25JRC4KICAgICBP
cHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSUQ7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378781</attachid>
            <date>2019-09-13 21:08:45 -0700</date>
            <delta_ts>2019-09-13 21:15:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201789-20190913210821.patch</filename>
            <type>text/plain</type>
            <size>98575</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmU3ZDgzYTBiYTM3M2U0
YjcyNWNjMTNmYTE0YjIxOThiMmE5NjUuLjE3ZjQ0NmY3MTM2NDAyN2I2NzYwZTI5ZDllYzlmZThk
ZjU0ZWMwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEzIEBACisyMDE5LTA5LTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRo
ZSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vz
c2lvbiBwZXIgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAxNzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRoZSBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgQXMgYSByZXN1bHQsIHdlIG5vIGxvbmdlciBuZWVkIHRvIHBhc3MgdGhlIHNlc3Npb25J
RCBpbiBlYWNoIElQQyBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZQorICAgICAgICBOZXR3b3Jr
UHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRD
aGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRy
YWNraW5nUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vzc2lvbklEIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0
YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1
bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpibG9iU2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0Ns
aWVudENvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJv
bVBhcmVudDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsQ2hhbmdlRG9jdW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25X
aXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpzZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmRlbGV0ZUNvb2tpZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnNlc3Npb25JRCBjb25zdCk6CisKIDIwMTktMDktMTEgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIEFSIFF1aWNrTG9v
ayB0byB0cmlnZ2VyIHByb2Nlc3NpbmcgaW4gdGhlIG9yaWdpbmF0aW5nIHBhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjBjMmVmNzc4MWZmODAzMjcyMzljOThjZjVjYzRiMDli
OGZmYWZkZC4uODYzN2QyZjRiNmFhZDRlYzBhNTYxNDI3MGYxM2RlYjI5ZDUyMGQxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc2LDE0ICs3NiwxNSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK1JlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIGNv
bm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MobmV0d29ya1Byb2Nlc3MsIHdlYlByb2Nlc3NJZGVudGlmaWVy
LCBzZXNzaW9uSUQsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKLU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCitOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiAg
ICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgICwgbV9tZG5zUmVnaXN0ZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTExMyw3ICsx
MTQsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CisgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwogI2VuZGlmCiB9CiAKQEAgLTIwNCwxNyArMjA1LDE2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3dlYklE
QkNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV93ZWJJREJDb25uZWN0aW9ucy5lbmQoKSkKLSAgICAgICAgICAgIGl0ZXJh
dG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIGlmIChtX3dlYklEQkNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3dlYklEQkNvbm5lY3Rp
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgaWYgKG1fc3dDb25uZWN0
aW9uKQorICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTI2OSw4ICsyNjksOCBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOworICAgICAgICBpZiAo
bV9zd0Nvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtMzE0LDEzICszMTQsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBhdXRvIGlkYkNvbm5lY3Rp
b25zID0gc3RkOjpleGNoYW5nZShtX3dlYklEQkNvbm5lY3Rpb25zLCB7IH0pOwotICAgIGZvciAo
YXV0byYgY29ubmVjdGlvbiA6IGlkYkNvbm5lY3Rpb25zLnZhbHVlcygpKQotICAgICAgICBjb25u
ZWN0aW9uLT5kaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOworICAgIGlmIChhdXRvIGlkYkNv
bm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCQ29ubmVjdGlvbiwgeyB9KSkKKyAgICAg
ICAgaWRiQ29ubmVjdGlvbi0+ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1bnJlZ2lzdGVyU1dDb25uZWN0
aW9ucygpOworICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCkBAIC0zMzIsMjAgKzMzMSwyMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSQogewogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiB1cmwsIFN0
cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
IW1fbmV0d29ya1NvY2tldFN0cmVhbXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIFdlYkNv
cmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiB0b2tlbiA9IHsgfTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+c291cmNlQXBwbGljYXRp
b25BdWRpdERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5zZXQo
aWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCksIFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmll
ciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0
cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdv
cmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHVybCksIG1fc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlv
biwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtTb2NrZXRDaGFubmVscy5jb250YWlucyhpZGVu
dGlmaWVyKSk7Ci0gICAgaWYgKGF1dG8gY2hhbm5lbCA9IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpj
cmVhdGUoKnRoaXMsIHNlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQor
ICAgIGlmIChhdXRvIGNoYW5uZWwgPSBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKCp0aGlz
LCBtX3Nlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQogICAgICAgICBt
X25ldHdvcmtTb2NrZXRDaGFubmVscy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjaGFubmVsKSk7
CiB9CiAKQEAgLTM3NCw5ICszNzMsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZW5kU3VzcGVuc2lvbigpCiAjZW5kaWYKIH0KIAorTmV0d29ya1Nlc3Npb24qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpuZXR3b3JrU2Vzc2lvbigpCit7CisgICAgcmV0dXJu
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24obV9zZXNzaW9uSUQpOworfQorCiBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApAQCAtNDkwLDMxICs0OTQsMzEgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVj
b25uZWN0aW8KICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGlkRmluaXNoUHJlY29ubmVjdGlvbihwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpLCAwKTsKIH0KIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oY29uc3QgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbigpCiB7Ci0gICAgaWYgKHNlc3Npb25JRCAhPSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgaWYgKG1fc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Mo
KS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCkpCiAgICAgICAgICAgICByZXR1cm4gKnN0b3Jh
Z2VTZXNzaW9uOwogCiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dz
aW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3
b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgogICAgICAgICAvLyBG
SVhNRTogRmluZCBhIHdheSB0byB0cmFjayBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb25zIG1vcmUg
cmlnb3JvdXNseS4KICAgICAgICAgTE9HX0VSUk9SKCJOb24tZGVmYXVsdCBzdG9yYWdlIHNlc3Np
b24gd2FzIHJlcXVlc3RlZCwgYnV0IHRoZXJlIHdhcyBubyBzZXNzaW9uIGZvciBpdC4gUGxlYXNl
IGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0IGRpc2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGlu
IHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3RlZCByYWNlLiIpOwogICAgIH0KLSAgICByZXR1cm4g
bmV0d29ya1Byb2Nlc3MuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgcmV0dXJuIG5ldHdv
cmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewot
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vz
c2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8v
IEluIGNhc2UgYSByZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBzZXJ2aWNlIHdvcmtlciwgd2UgZG8g
bm90IGhhdmUgeWV0IHRoZSBhYmlsaXR5IHRvIGNvbnZlcnQgdGhlIGxvYWQuCiAgICAgaWYgKCFt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpIHsKLSAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2Fk
SUQsIHJlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIo
KS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTI3LDEyICs1MzEsMTIgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2kKICAgICBsb2FkZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVl
c3QsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CisgICAgYXV0byYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBhdXRvIHJlc3Vs
dCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
KSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkK
ICAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24o
KnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24s
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBw
YWdlSUQsIFdURjo6bnVsbG9wdCk7CiAgICAgfQpAQCAtNTQwLDEwNCArNTQ0LDEwNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKIHsKLSAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCiAgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyksIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKICAg
ICB9CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZXNFbmFibGVkKCkpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKCkuY29va2llc0VuYWJsZWQoKSk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lv
bihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKCkuY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IHJlc3VsdDsKLSAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBz
ZXNzaW9uSUQpLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKKyAgICBzdG9yYWdlU2Vzc2lvbigpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsK
KyAgICBzdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIHNlc3Npb24t
PmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5cGUpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJs
b2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lv
bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNV
UkwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxG
cm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
ZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoLCBudWxscHRyKSwgY29udGVu
dFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5k
KQogewotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CiAgICAg
aWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlm
ICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uID8gc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
YmxvYlNpemUodXJsKSA6IDApOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKQEAgLTY2NywyMSArNjcxLDIxIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShmcmFtZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7Ci0gICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3Rv
cmFnZVNlc3Npb24obV9zZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Y2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdlSUQpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewog
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBbXSB7IH0pOwogICAgIH0KQEAgLTY5
Nyw5ICs3MDEsOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYQogICAgIH0KIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzA5LDkgKzcxMyw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHBy
b21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nl
c3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpIHsKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9y
YWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgd2ViUGFn
ZUlELCB3ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzIxLDkgKzcyNSw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
OlllcywgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVy
UGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5y
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzKSwgb3BlbmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikpOwogICAgIH0K
QEAgLTc0NSw5ICs3NDksOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJj
ZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291
cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9u
SUQpCitPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJj
ZSkKIHsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgaWYgKG1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAv
LyBFaXRoZXIgZ2V0IHRoZSBleGlzdGluZyByb290IGFjdGl2aXR5IHRyYWNrZXIgZm9yIHRoaXMg
cGFnZSBvciBjcmVhdGUgYQpAQCAtODQxLDM4ICs4NDUsMzUgQEAgc2l6ZV90IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNvdXJjZUxv
YWRJZGUKIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIgLSAlIiBQUkl1NjQsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKLSAgICBBU1NFUlQoIW1f
d2ViSURCQ29ubmVjdGlvbnMuY29udGFpbnMoc2Vzc2lvbklELnRvVUludDY0KCkpKTsKKyAgICBM
T0coSW5kZXhlZERCLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaElE
QkNvbm5lY3Rpb25Ub1NlcnZlciAtICUiIFBSSXU2NCwgbV9zZXNzaW9uSUQudG9VSW50NjQoKSk7
CisgICAgQVNTRVJUKCFtX3dlYklEQkNvbm5lY3Rpb24pOwogICAgIAotICAgIG1fd2ViSURCQ29u
bmVjdGlvbnMuYWRkKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCkpOworICAgIG1fd2ViSURCQ29ubmVjdGlvbiA9IFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3MsIG1fY29ubmVj
dGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciwgbV9zZXNzaW9uSUQpOwogfQogI2Vu
ZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCiB7Ci0gICAg
YXV0byBzd0Nvbm5lY3Rpb25zID0gV1RGTW92ZShtX3N3Q29ubmVjdGlvbnMpOwotICAgIGZvciAo
YXV0byYgc3dDb25uZWN0aW9uIDogc3dDb25uZWN0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc3dDb25uZWN0aW9uKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5zZXJ2ZXIoKS5yZW1v
dmVDb25uZWN0aW9uKHN3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgaWYg
KG1fc3dDb25uZWN0aW9uKQorICAgICAgICBtX3N3Q29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3Zl
Q29ubmVjdGlvbihtX3N3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiB7Ci0gICAgYXV0byYgc2VydmVyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0
byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29y
a1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3
U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwg
bV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLCBtX3Nlc3Npb25JRCk7
CiAKLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAg
ICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlc3Npb25JRCwgbWFrZVdlYWtQdHIoKmNvbm5lY3Rpb24p
KTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uKTsKKyAgICBtX3N3Q29ubmVjdGlvbiA9IG1h
a2VXZWFrUHRyKCpjb25uZWN0aW9uKTsKICAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3Zl
KGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZlciA9IG1f
bmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3RzKHNlc3Npb25JRCkpCisg
ICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lv
bklmRXhpc3RzKG1fc2Vzc2lvbklEKSkKICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0g
bWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nl
c3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0
KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWZiMGM5Y2QzNDE2
N2I2ZGNjYjBjOTE5ZWI2Y2RlMzQyODdmNWJmZS4uODgyNDFlM2RlZWIwZDM2MTgxMTI1ZTVmNTc4
MGNhM2I1YmIyZDgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtODQsOCArODQsMTEg
QEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHB1YmxpYzoKICAgICB1c2lu
ZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogCi0gICAg
c3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBOZXR3b3JrU2Vz
c2lvbiogbmV0d29ya1Nlc3Npb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KQEAgLTE0
MCw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmV0d29ya0xvYWRJbmZvcm1hdGlvbkJ5
SUQucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNv
dXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3Vy
Y2UpOwogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKQEAgLTE1Miw5ICsxNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6SGFzQWN0aXZpdHkpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRG
aW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwpAQCAtMTc2LDQwICsxODAsNDAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQg
cGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lID0geyB9KTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgIHZvaWQgY29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwot
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgZW5kKTsKLSAgICB2b2lkIGJsb2JTaXplKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7Ci0gICAgdm9pZCB3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKKyAg
ICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgdm9pZCBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0Vu
YWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIGdldFJhd0Nv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGlu
dDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIAotICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFt
KFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7
CisgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgdWludDY0X3QpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
dWludDY0X3QgaWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICAvLyBNZXNzYWdlcyBoYW5kbGVycyAoTW9kZXJuIElEQikuCi0gICAgdm9pZCBlc3RhYmxpc2hJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNo
SURCQ29ubmVjdGlvblRvU2VydmVyKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCk7Ci0gICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTV0Nv
bm5lY3Rpb25zKCk7CisgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKKyAg
ICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAog
ICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydDIpOwpAQCAtMjMxLDE0ICsyMzUsMTQgQEAgcHJpdmF0ZToKICAgICBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFy
UGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNzaW9uUmVzb3VyY2VMb2Fk
RGF0YSYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CisgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTI4MiwxMCArMjg2LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAogICAgIElQQzo6Q29ubmVj
dGlvbiogcGF5bWVudENvb3JkaW5hdG9yQ29ubmVjdGlvbihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIGZpbmFsOwogICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGlu
YXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFM
OjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9y
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZp
bmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5
cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyAgICBjb25zdCBT
dHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQ
YXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1l
c3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKICAgICB2b2lkIHBh
eW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CkBAIC0yOTMsNiAr
Mjk3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8TmV0
d29ya1NvY2tldFN0cmVhbT4+IG1fbmV0d29ya1NvY2tldFN0cmVhbXM7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPj4gbV9uZXR3b3Jr
U29ja2V0Q2hhbm5lbHM7CkBAIC0zMTUsMTEgKzMyMCwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Pj4gbV93ZWJJREJDb25uZWN0aW9uczsKKyAgICBS
ZWZQdHI8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX3dlYklEQkNvbm5lY3Rpb247CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAg
ICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRD
b25uZWN0aW9uOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGQxMzU0YTI1YzIwNzg4MDMyNzMyZDRkNjdlY2I0NTMwODRmMWJkOTYuLjky
MDViYmYxOWVjYjkwYjJlODg0ODQ2MDcxYzJkNzA4NzgxNjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzEsMzggKzMxLDQxIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQ
cmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAgICAgUHJlY29ubmVjdFRvKHVpbnQ2NF90IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQotICAgIENvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpCisgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0
ZWROYW1lKQorICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5nIGNvb2tpZVN0cmluZykKLSAg
ICBDb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGVuYWJs
ZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKSBTeW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgRGVsZXRlQ29va2llKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAg
Q29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNFbmFibGVk
KCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpi
b29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAt
PiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5j
aHJvbm91cworICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91
cworICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAotICAgIFJl
Z2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxl
LCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMs
IFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgVVJMIHNyY1VSTCkKLSAgICBSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmws
IFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQot
ICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
IHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKQotICAgIEJsb2JT
aXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3Vs
dFNpemUpIFN5bmNocm9ub3VzCi0gICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxT
dHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmws
IFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25I
YW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkK
KyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3Ry
aW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBl
bmQpCisgICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAgICBCbG9iU2l6ZShVUkwgdXJs
KSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKKyAgICBXcml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+
IGZpbGVOYW1lcykgQXN5bmMKIAogICAgIFNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCi0gICAgQ3JlYXRlU29ja2V0U3RyZWFtKFVSTCB1cmws
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRf
dCBpZGVudGlmaWVyKQotICAgIENyZWF0ZVNvY2tldENoYW5uZWwoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3RvY29s
LCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIENyZWF0ZVNvY2tldFN0cmVhbShVUkwgdXJsLCBT
dHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgQ3JlYXRlU29j
a2V0Q2hhbm5lbChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKTsKLSAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCisgICAgUmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOworICAgIENsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KTsKKyAgICBMb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQorICAgIAorICAgICMgRklYTUU6IFN0b3AgcGFzc2luZyBzZXNzaW9uSURzLgogICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9u
SUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+IHN0YXRpc3RpY3Mp
Ci0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2Vzcykg
QXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCi0gICAgUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBvcGVuZXJEb21haW4pCisKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BG
cmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4g
KGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBl
bnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKICNlbmRpZgogCiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
U3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBk
ZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtNzUs
MTIgKzc4LDEyIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBUYWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3ModWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyBuZXR3b3JrTWV0cmljcykgU3luY2hyb25vdXMKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotICAgIEVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKCkKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgRXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQorICAgIEVz
dGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQogI2VuZGlmCiAKICAgICBDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MSwgc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBwb3J0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTkxZjFiM2Y4MTNiZTZmMWQ0MDg4MmVjMjNhMjk0
ZjQ4MTNhYjNmYi4uM2ZmNmU5ZDM4NjVjODdhMDdhNGFiNDBiNTMzMDVjODIxNDEzNzk2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIsIElQQzo6QXR0YWNobWVudD4+CiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBpcGNDb25uZWN0aW9uID0gY3JlYXRlSVBDQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIG5ld0Nvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRl
KCp0aGlzLCBpZGVudGlmaWVyLCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CisgICAgYXV0byBuZXdD
b25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywg
aWRlbnRpZmllciwgc2Vzc2lvbklELCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CiAgICAgYXV0byYg
Y29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb24uZ2V0KCk7CiAKICAgICBBU1NFUlQoIW1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwZWRmMWQ1MGFjM2M5Y2U2MjY1
NTVlNTdhMzg5ZTg5OTgxMmNkNzdhLi5lYjk4NDJkMTdhZmNlMzUxNzk0ZTNhYTU0ZjFmNjM5MmJl
OGE5YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0zODgsNyArMzg4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJz
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYm
KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGEzZjdlYTMyNjRh
ZmYwMWQ4NmNkMDc5MmIxMTc1NTQzM2FlZjJkMDYuLjczOGQ3MGFmOWFmZDQwZWY4NjQ4YmU3ODA0
NjVlYmQ0OTU3NzY2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
IHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9u
IGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wg
aWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU4NGI3NjkwMGJjZDMxZjQxZjRlZDEy
MTQ1MmJlNzZmODQ4NWE1YjIuLmNkZTlmMjA1YTk1NThlZDg5ZGQ3MDc4ZGVmNGQzN2Q3NmRjOWMy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdS
ZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIHNlc3Npb25JRCgpKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNl
KCkpOwogCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAgIG1fd2FzU3RhcnRlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCmluZGV4IGM4Yjg2YzUx
MTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMuLjU4OWQ3ODMwYmQ4MTY0OThiZGUyNzZi
M2E3YTIxMmRhYmFmMGI3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9T
Lm1tCkBAIC01MiwzMCArNTIsMzAgQEAgVUlWaWV3Q29udHJvbGxlciAqTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWUKICAgICByZXR1
cm4gbmlsOwogfQogCi1jb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitjb25zdCBT
dHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JC
b3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25D
b2NvYSo+KG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5l
dHdvcmtTZXNzaW9uKCkpKQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Ym91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLWNvbnN0IFN0cmlu
ZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckNURGF0
YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK2NvbnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckNURGF0YUNvbm5lY3Rpb25TZXJ2aWNl
VHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCiB7Ci0gICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4obV9uZXR3b3JrUHJv
Y2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4obmV0d29ya1Nlc3Npb24oKSkpCiAg
ICAgICAgIHJldHVybiBzZXNzaW9uLT5jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKTsKICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotY29uc3QgU3RyaW5nJiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQorY29uc3QgU3RyaW5nJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKIHsKLSAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPihtX25ldHdvcmtQcm9jZXNz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0
YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPihuZXR3b3JrU2Vzc2lvbigpKSkKICAgICAg
ICAgcmV0dXJuIHNlc3Npb24tPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwog
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1jb25zdCBTdHJpbmcmIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCitjb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewotICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG1fbmV0d29y
a1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5ldHdvcmtTZXNzaW9uKCkp
KQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCk7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCA1MWIzZTkwODA2NmU1ZjhjNDFlZDgwMWY2MWFlOWIxMDE3ZGY0ODVjLi44NTFiNTgwODNkZjgy
OWJiOWNmMDc5Yzk1NzZmMTI3ZDQzNTEyMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE0Miw3ICsx
NDIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2NlcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgY29ubmVjdGlvblJlcXVl
c3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKIHsKLSAgICBj
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25u
ZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0
YWJsZSB7CisgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlBy
b2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Np
b25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNz
UHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElk
ZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQzYzgyZjA0Njg0OGM4Y2QwNTliYzI1
NjliZjRjYTI5M2E0ZmYxNGEuLjVkNjNkNDUzODEzNzUzNTViNjU5NDJhYjM2MTVmMjYwMDg1Yzhm
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MTQ3Niw2ICsxNDc2LDEyIEBAIFdlYlByb2Nlc3NQb29sJiBXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NQb29sKCkgY29uc3QKICAgICByZXR1cm4gKm1fcHJvY2Vzc1Bvb2wuZ2V0KCk7CiB9CiAKK1BB
TDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQcm94eTo6c2Vzc2lvbklEKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3Jl
LT5zZXNzaW9uSUQoKTsKK30KKwogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAKIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5Ojp0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1ZDQzNWJm
M2U4ZDBjNmYxMTQ5OTQ5MjEwYTQzMmViYmEyZTZmMjdiLi4yN2Y2YjM2MThmMzlhNDAyMDExODA0
MGVmN2ZlNzYyMDQzOTBiYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaApAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoKIAogICAgIFdlYnNpdGVEYXRhU3Rv
cmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUp
OyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFT
dG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9ySWRl
bnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgc3RhdGljIFdlYlBhZ2VQ
cm94eSogd2ViUGFnZShXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDZjMmYxM2QwNjYwNTU3NmIzYWE4
YjU0OTNhZWY5NzUzMThmY2QzOTQuLjk3MzNhNjMwZjI3ZTFjMjA0MzU2Njg5YWYwNzI1MGQ5YmUx
YmUyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cApAQCAtNjIsNyArNjIsNyBAQCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25J
RChzZXNzaW9uSUQpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub1NlcnZlcihJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKCp0aGlzKSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2Vy
dmVyKHNlc3Npb25JRCksIDApOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hJREJDb25uZWN0aW9uVG9TZXJ2ZXIoKSwgMCk7CiB9CiAK
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6fldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5jcHAKaW5kZXggNzgxMTIwNzc4NGFmNjBhMmFkZWM1NmNhYTU4NjRhNzFiM2FkMTIzYy4u
NjZmNDQyYzI5Zjk5NzQxZTRlMTY1Y2RkYTkxMjhiOGY2OTVlMTYzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcApA
QCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JSZWdp
c3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5k
bGU7CiAKQEAgLTQ0LDM5ICs0NCwzOSBAQCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3Rl
ckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJgogICAgIGlm
ICghZmlsZS0+cGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKGZpbGUtPnBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHks
IGV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwoc2Vzc2lvbklE
LCB1cmwsIGZpbGUtPnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIGZpbGUtPnBhdGgoKSwgZXh0ZW5zaW9uSGFu
ZGxlLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVj
dG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGJs
b2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTCh1cmwsIGJs
b2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6
cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFVSTCYgc3JjVVJMKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9i
VVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGcm9tVVJMIHsgc2Vzc2lvbklELCB1cmwsIHNyY1VSTCB9
LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwgeyB1cmwsIHNyY1VSTCB9LCAwKTsK
IH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmls
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBBU1NF
UlQoZmlsZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChzZXNz
aW9uSUQsIHVybCwgc3JjVVJMLCBmaWxlLT5wYXRoKCksIGNvbnRlbnRUeXBlKSwgMCk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgZmlsZS0+
cGF0aCgpLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1
bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
KQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklE
LCB1cmwpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHVybCksIDApOwogfQogCi12b2lk
IEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwm
IHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2Uoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDAp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQp
LCAwKTsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQordW5zaWduZWQgbG9u
ZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgdWludDY0X3QgcmVzdWx0U2l6ZTsKLSAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJs
b2JTaXplKHNlc3Npb25JRCwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpCbG9iU2l6ZTo6UmVwbHkocmVzdWx0U2l6ZSksIDApKQorICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
QmxvYlNpemUodXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpC
bG9iU2l6ZTo6UmVwbHkocmVzdWx0U2l6ZSksIDApKQogICAgICAgICByZXR1cm4gMDsKICAgICBy
ZXR1cm4gcmVzdWx0U2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDg3ODAw
NmVkOTUzMTIwMDQzY2E5ZjA5M2VhYWRlYzcwNmMzNGIxOTQuLmUxOGYwYWU3OGYyZTYyNTdmZDgy
NDY5OTUzZmUzMjQ1NjNlYTlkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjEw
LDkgKzIxMCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTCiB7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKHNlc3Npb25JRCwgYmxvYlVSTHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JV
UkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlm
aWVyLCBSZXNvdXJjZUVycm9yJiYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkK
QEAgLTI2MCw4ICsyNjAsOCBAQCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXImIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2VzcwogV2ViU1dDbGllbnRD
b25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJDb25uZWN0
aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKHNl
c3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIHJldHVybiAqbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9u
LmVuc3VyZShzZXNzaW9uSUQsIFtzZXNzaW9uSURdIHsKLSAgICAgICAgcmV0dXJuIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6Y3JlYXRlKHNlc3Npb25JRCk7CisgICAgcmV0dXJuICptX3N3Q29ubmVj
dGlvbnNCeVNlc3Npb24uZW5zdXJlKHNlc3Npb25JRCwgW10geworICAgICAgICByZXR1cm4gV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUoKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMmI0ZWExYTc5NGRhZTkzZTgzYjgx
NDVhNTAxYjhjYTMzNDJhZGI5Ni4uZTg4NDlmZWMxN2JhMDY4MmViYmRhNGQzZGY4OTcxYjZkMWUx
OTRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGJlIGEgc2luZ2xlIGNvbm5lY3Rpb24uCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Np
b25JRCwgUmVmUHRyPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uc0J5U2Vz
c2lvbjsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggM2U3OWY5YTdlMTRlNWExODIyZjZiNGU2
ZDVlYzJiZDdkYjM2MjM2ZC4uY2M3ZWM0MmVmMTViMWUzMTJiMjQ0Mzc4YzYzNjFkMGMxZTg2YTUz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpDb25u
ZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0
CiAgICAgaWYgKHJlcXVlc3QtPnVybCgpICE9IHVybCAmJiBtX2NsaWVudCkKICAgICAgICAgbV9j
bGllbnQtPmRpZFVwZ3JhZGVVUkwoKTsKIAotICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVsIHsg
bV9kb2N1bWVudC0+c2Vzc2lvbklEKCksICpyZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcigp
IH0pOworICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVsIHsgKnJlcXVlc3QsIHByb3RvY29sLCBp
ZGVudGlmaWVyKCkgfSk7CiAgICAgcmV0dXJuIENvbm5lY3RTdGF0dXM6Ok9LOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNw
cAppbmRleCAxZmI2OTYxZmZmMGJhZDYzMWRlMTA5MmMwNGNmMjY4ZTJjMjc4YzRjLi4zY2E5MDA0
MmI3NTI3OWJmMzkxYmM1MzJhZDE5MWIyNmJlYTYzODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTgyLDExICs4
MiwxMSBAQCBSZWY8V2ViU29ja2V0U3RyZWFtPiBXZWJTb2NrZXRTdHJlYW06OmNyZWF0ZShjb25z
dCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlNvY2tldFN0cmVhbSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0
aW9uKSk7CiB9CiAKLVdlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYg
dXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQorV2ViU29ja2V0
U3RyZWFtOjpXZWJTb2NrZXRTdHJlYW0oY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBj
YWNoZVBhcnRpdGlvbikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkKICAg
ICAsIG1fY2xpZW50KGNsaWVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVNvY2tldFN0cmVhbSh1cmwsIHNl
c3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIoKSksIDApOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRl
U29ja2V0U3RyZWFtKHVybCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIoKSksIDApOwogCiAg
ICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jayk7CiAgICAg
QVNTRVJUKCFnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5jb250YWlucyhpZGVudGlmaWVyKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGE4YWE2Nzk2MjI5MmFhOGEyM2NmYTY2OGI5ZjY3
ZjVkMzQ3NDc3MDkuLjA2YTRjYzdkYjdhMThjMTE4N2JhZmM2NTg4NTU0MzJjNDVlYjJhZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmNwcApAQCAtNTUsMTMgKzU1LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBQ
QUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogCi1XZWJTV0NsaWVudENvbm5lY3Rpb246
OldlYlNXQ2xpZW50Q29ubmVjdGlvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV9zZXNz
aW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9pZGVudGlmaWVyKFByb2Nlc3M6OmlkZW50aWZpZXIo
KSkKK1dlYlNXQ2xpZW50Q29ubmVjdGlvbjo6V2ViU1dDbGllbnRDb25uZWN0aW9uKCkKKyAgICA6
IG1faWRlbnRpZmllcihQcm9jZXNzOjppZGVudGlmaWVyKCkpCiAgICAgLCBtX3N3T3JpZ2luVGFi
bGUobWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigpKQogewotICAgIEFTU0VSVChtX3Nl
c3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFi
bGlzaFNXU2VydmVyQ29ubmVjdGlvbiB7IH0pOwogfQogCiBXZWJTV0NsaWVudENvbm5lY3Rpb246
On5XZWJTV0NsaWVudENvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCBlZmVmMzZiY2Fj
ZDI4NTQ1N2JlMDE0ZjhkNGNiYzlkYTY5OWMyZjhiLi4yN2ZlYTJjMWIyNGI4YzJhOTY0YzRlOTY3
ZDNmN2VjYTM4ZDAzNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMzQsNyArMzQsNiBAQAogI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgotI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDcgKzQ4LDcgQEAgY2xhc3MgV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyOwogCiBjbGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
YlNXQ2xpZW50Q29ubmVjdGlvbj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7
IH0KKyAgICBzdGF0aWMgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5lY3Rpb24pOyB9CiAgICAgfldlYlNXQ2xp
ZW50Q29ubmVjdGlvbigpOwogCiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQpAQCAtNjksMTAgKzY4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzeW5j
VGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
IAotICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lv
bklEOyB9Ci0KIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViU1dDbGllbnRDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEKTsKKyAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQg
c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYp
IGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKQEAgLTk4LDE0ICs5NSwxMyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVuY3Rpb248dm9p
ZCgpPiYmIHRhc2spOwogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IGZpbmFsOwotICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQudG9VSW50NjQoKTsgfQorICAg
IHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gMDsgfQogCiAgICAgdm9pZCBzZXRTV09yaWdpblRhYmxlU2hhcmVkTWVtb3J5KGNvbnN0IFNo
YXJlZE1lbW9yeTo6SGFuZGxlJik7CiAgICAgdm9pZCBzZXRTV09yaWdpblRhYmxlSXNJbXBvcnRl
ZCgpOwogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9u
SUQ7CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiAKICAgICBVbmlxdWVSZWY8V2ViU1dPcmlnaW5UYWJsZT4gbV9zd09yaWdpblRhYmxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGU4OWQwYjM3ZGU4OTEyMGU2
NDNiNDczMTc0MWQyOGExMTYzODZhOWQuLmU2MzNjNzdjNzFmMGIwZWY3NTQ5NWQxMDQyNjYyMmQ5
OTNkMjM2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTEwMCw3
ICsxMDAsNyBAQCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbgogI2VuZGlmCiB7CiAgICAgdXBkYXRl
UHJlZmVyZW5jZXNTdG9yZShzdG9yZSk7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlz
aFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwg
MCk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24g
eyBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIDApOwogfQogCiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6fldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODMwZTVjODE1ZmE0ODRlM2M3ZjEyN2Nj
MmU0ZWUzMTFjNDk0ZDEwMy4uYzU0ZjdkZjkxZjJkNWY0NWUwZTA3ZjA5MWVjMWIwOWE1YzU5MWU0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50MigpCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAobV9mcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2Vzc0lkZW50aWZpZXIpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdmVTdG9yYWdlQWNjZXNzRm9y
RnJhbWUoCi0gICAgICAgICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmll
ci0+c2Vzc2lvbklELCBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJh
bWVJRCwgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDAp
OworICAgICAgICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPmZy
YW1lSUQsIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5wYWdlSUQpLCAw
KTsKICAgICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEY6
Om51bGxvcHQ7CiAgICAgfQogI2VuZGlmCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgVVJMJiBjdXJy
ZW50VXJsLCBjb24KIAogICAgIGlmIChtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRp
ZmllciAmJiAhV2ViQ29yZTo6YXJlUmVnaXN0cmFibGVEb21haW5zRXF1YWwoY3VycmVudFVybCwg
bmV3VXJsKSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSgKLSAgICAg
ICAgICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5zZXNzaW9uSUQs
IG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5mcmFtZUlELCBtX2ZyYW1l
U3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+cGFnZUlEKSwgMCk7CisgICAgICAgICAg
ICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9mcmFt
ZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDApOwogICAgICAgICBt
X2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKICAg
ICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDVm
YjNjZjIwOWEzZTZjMWJlMzkwZGJmOGVhZDkwNDNmZTQzYTE0NDUuLmUxYjRiOWViM2YzODRmNWY1
ZmYyOTEzMWE5M2M4ZmQ2ZGYwYzA2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcApAQCAtNTksMTQgKzU5LDE0IEBAIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
LCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQm
IG9wZW5lckRvY3VtZW50KQogewogICAgIGF1dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQu
dXJsKCk7CiAgICAgUmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07
CiAgICAgaWYgKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAhPSBvcGVuZXJEb21haW4KICAg
ICAgICAgJiYgIW9wZW5lckRvY3VtZW50Lmhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VB
Y2Nlc3NXaXRoVXNlckludGVyYWN0aW9uKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcykKICAg
ICAgICAgJiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uob3BlbmVyVXJsLnN0cmluZygpLCBXVEY6
OmJsYW5rVVJMKCkpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihzZXNzaW9uSUQsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBv
cGVuZXJEb21haW4pLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21h
aW4pLCAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24t
YmFzZWQgcmVxdWVzdHMgc2luY2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAg
ICAgICBvcGVuZXJEb2N1bWVudC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwpAQCAt
MzY0LDcgKzM2NCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRl
cmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QKIAogICAgIC8vIFdlIG5vdGlm
eSByaWdodCBhd2F5IGluIGNhc2Ugb2YgYSB1c2VyIGludGVyYWN0aW9uIGluc3RlYWQgb2Ygd2Fp
dGluZyB0aGUgdXN1YWwgNSBzZWNvbmRzIGJlY2F1c2Ugd2Ugd2FudAogICAgIC8vIHRvIHVwZGF0
ZSBjb29raWUgYmxvY2tpbmcgc3RhdGUgYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okxv
Z1VzZXJJbnRlcmFjdGlvbihkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9wRnJhbWVEb21haW4pLCAw
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkxvZ1VzZXJJbnRlcmFjdGlvbih0b3BGcmFtZURvbWFpbiksIDApOwogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fc2hvdWxkTG9nVXNlckludGVyYWN0aW9u
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmNwcAppbmRleCBmNmM1NTdkNWYwZmQyMDFkYmI1MDUxMTQ3ZWJjMjcwYTViNDVjZjNjLi4zYWI3
OGU1MzlkN2VlZDliYzVjMjhhZjNlY2JjZWY1MGYwN2Y3YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTU5LDcgKzU5LDcg
QEAgU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAg
ICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llc0ZvckRPTShkb2N1bWVudC5zZXNzaW9uSUQoKSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNo
b3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJp
bmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Zv
ckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1l
bnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9j
dW1lbnQsIHVybCkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwg
MCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gY29va2llU3RyaW5nOwpAQCAt
NzQsMjIgKzc0LDIyIEBAIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgICAgIHBhZ2VJRCA9
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKICAgICB9CiAKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENv
b2tpZXNGcm9tRE9NKGRvY3VtZW50LnNlc3Npb25JRCgpLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
Y29va2llU3RyaW5nKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgY29va2llU3RyaW5nKSwgMCk7CiB9CiAKIGJvb2wgV2ViQ29va2llSmFyOjpjb29r
aWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAg
ICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKGRv
Y3VtZW50LnNlc3Npb25JRCgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVzRW5hYmxlZCgpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNv
b2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdAogewogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKHNlc3Npb25JRCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29r
aWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpS
ZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vz
c2VkID8gV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBXZWJDb3JlOjpTZWN1
cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiB9CkBAIC0xMDMsMTQgKzEwMywxNCBAQCBib29sIFdl
YkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdQogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkucGFnZUlEKCk7CiAgICAgfQogCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKGRvY3Vt
ZW50LnNlc3Npb25JRCgpLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyks
IDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6
UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHZvaWQgV2ViQ29va2llSmFyOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29y
ZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKGRvY3VtZW50LnNlc3Npb25JRCgpLCB1cmws
IGNvb2tpZU5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpLCAw
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNGNlMTAxMjhhYzQwYmNmZGFiNWJkN2QwZmU0
YjE4NjRlYzkyN2IzYS4uYjQ4NWM1NmI0MTE2YWYxYWVhNjYzODBiNzFiYTFkMTUyNDIzNzllNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAt
MjgzLDkgKzI4Myw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpCiAgICAgYXV0byBwb2xpY3lE
b3dubG9hZElEID0gbV9wb2xpY3lEb3dubG9hZElEOwogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9
IHsgfTsKIAotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsK
LSAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBwYWdlKCkgPyBwYWdlKCktPnNlc3Npb25J
RCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKLSAgICB3ZWJQcm9jZXNz
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U3RhcnREb3dubG9hZChzZXNzaW9u
SUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZE5hbWUpLCAwKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlN0YXJ0RG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2VzdGVkTmFtZSks
IDApOwogfQogCiB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCkBAIC0zMDcsNyArMzA1LDcgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwK
ICAgICBlbHNlCiAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKIAotICAg
IHdlYlByb2Nlc3MuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoc2Vzc2lvbklELCBtYWluUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAwKTsKKyAgICB3ZWJQ
cm9jZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29udmVydE1haW5SZXNv
dXJjZUxvYWRUb0Rvd25sb2FkKG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3du
bG9hZElELCByZXF1ZXN0LCByZXNwb25zZSksIDApOwogfQogCiB2b2lkIFdlYkZyYW1lOjphZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCBt
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgcmVxdWVzdElEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxY2Rj
MGI2OWU4YTQzMjNiYjNhMGNlYjNlZWIyMDFlYjE1YjAyYmYzLi5hOTNhNTgwYzQzMzMwOGY1N2Yx
Yzc2YTM0ZWEzMjNkYmMxNTNmNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMTMzOCw3ICsxMzM4LDcgQEAgdm9pZCBXZWJQYWdlOjpjbG9z
ZSgpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KHNlc3Npb25JRCgpLCBtX2lkZW50aWZpZXIpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNsZWFyUGFnZVNwZWNpZmlj
RGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MobV9pZGVudGlmaWVyKSwgMCk7CiAjZW5kaWYK
IAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwpAQCAtNjUzNSwxMiArNjUzNSwxMiBAQCB2b2lkIFdl
YlBhZ2U6OmZyYW1lQmVjYW1lUmVtb3RlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBHbG9iYWxG
cmFtZUlkZW50aWZpZXImJgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiB2
b2lkIFdlYlBhZ2U6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFt
ZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJhbWUmIGZy
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpIYXNTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCgpLCBXVEZN
b3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lLmZyYW1l
SUQoKSwgbV9pZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpIYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBX
VEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWUuZnJhbWVJRCgpLCBtX2lkZW50aWZpZXIpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFi
bGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJhbWUmIGZyYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQoKSwgV1RGTW92ZShz
dWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZS5mcmFtZUlEKCks
IG1faWRlbnRpZmllciwgbV93ZWJQYWdlUHJveHlJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZyYW1lID0gbWFrZVJlZihmcmFtZSks
IHNlc3Npb25JRCA9IHNlc3Npb25JRCgpLCBwYWdlSUQgPSBtX2lkZW50aWZpZXIsIGZyYW1lSUQg
PSBmcmFtZS5mcmFtZUlEKCldKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgbXV0YWJs
ZSB7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3Vi
RnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWUuZnJhbWVJRCgpLCBt
X2lkZW50aWZpZXIsIG1fd2ViUGFnZVByb3h5SWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBz
ZXNzaW9uSUQgPSBzZXNzaW9uSUQoKSwgcGFnZUlEID0gbV9pZGVudGlmaWVyLCBmcmFtZUlEID0g
ZnJhbWUuZnJhbWVJRCgpXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIG11dGFibGUg
ewogICAgICAgICBpZiAod2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVz
KQogICAgICAgICAgICAgZnJhbWUtPmZyYW1lTG9hZGVyQ2xpZW50KCktPnNldEhhc0ZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzKHsgc2Vzc2lvbklELCBmcmFtZUlELCBwYWdlSUQgfSk7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWQsIHByb21wdFdhc1Nob3duKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA5YjM0ZWMwNDZmNWYxODkwY2U5
NmNkMjA4NmRjNjdmM2Y0ZjU3MWVmLi5hMGYwMTliNzJmNTU4MWUzOTY5YTA1NDBiYTYyN2I1ODFi
ZmUwM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zOTEs
OCArMzkxLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldFNob3VsZFVzZUZv
bnRTbW9vdGhpbmcocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKTsKIAotICAgIGVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwotCiAgICAgc2V0VGVybWluYXRpb25UaW1l
b3V0KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsKIAogICAgIHJlc2V0UGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVz
KTsKQEAgLTQ2Miw2ICs0NjAsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcAogICAgICAgICBz
dXBwbGVtZW50LT5zZXRXZWJzaXRlRGF0YVN0b3JlKHBhcmFtZXRlcnMpOwogCiAgICAgcGxhdGZv
cm1TZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAg
ICAKKyAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIH0KIAogYm9vbCBXZWJQ
cm9jZXNzOjpoYXNQYWdlUmVxdWlyaW5nUGFnZUNhY2hlV2hpbGVTdXNwZW5kZWQoKSBjb25zdApA
QCAtNjUxLDYgKzY1MSw4IEBAIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OndlYlBhZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlEKSBjb25zdAogCiB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKIHsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5zZXNzaW9uSUQgPT0gc2Vzc2lvbklEKCkpOwor
CiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJl
IHNpbmNlIGR1cmluZyBhIHdpbmRvdy5vcGVuKCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykg
dGhlIFdlYlBhZ2UgZ2V0cyBjcmVhdGVkIGJvdGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIg
YW5kIHRocm91Z2ggdGhlIG5vcm1hbCB3YXkuIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlTWFw
LmFkZChwYWdlSUQsIG51bGxwdHIpOwpAQCAtNjY5LDYgKzY3MSw3IEBAIHZvaWQgV2ViUHJvY2Vz
czo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKKyAgICBBU1NFUlQoc2Vzc2lv
bklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsKICAgICBBU1NFUlQobV9wYWdlTWFwLmNvbnRhaW5z
KHBhZ2VJRCkpOwogCiAgICAgcGFnZVdpbGxMZWF2ZVdpbmRvdyhwYWdlSUQpOwpAQCAtMTE5MCw2
ICsxMTkzLDcgQEAgc3RhdGljIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBnZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJgogTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uJiBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQobV9zZXNzaW9u
SUQpOwogCiAgICAgLy8gSWYgd2UndmUgbG9zdCBvdXIgY29ubmVjdGlvbiB0byB0aGUgbmV0d29y
ayBwcm9jZXNzIChlLmcuIGl0IGNyYXNoZWQpIHRyeSB0byByZS1lc3RhYmxpc2ggaXQuCiAgICAg
aWYgKCFtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKaW5kZXggMjkyOGMxMDk1NGI3ZmNjYmY5MjA1OTZhMjM2OTY3NWE2ODVmN2Q0
NS4uMDRmM2JlZWY3ZGM0MjNlYjc0ZTA1MzFkNWZmMDIzYjExODU0NjdkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xNjIsOSArMTYyLDcgQEAgcHVibGljOgogCiAg
ICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmpl
Y3RlZEJ1bmRsZS5nZXQoKTsgfQogICAgIAotICAgIC8vIFByZXdhcm1lZCBXZWJQcm9jZXNzZXMg
ZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3aHkgdGhp
cyBpcyBhbiBvcHRpb25hbC4KLSAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2VzcyBnZXRz
IGEgV2ViUGFnZSwgaXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgotICAgIGNv
bnN0IE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiYgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9zZXNzaW9uSUQ7IH0KKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IEFT
U0VSVChtX3Nlc3Npb25JRCk7IHJldHVybiAqbV9zZXNzaW9uSUQ7IH0KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgY29tcG9zaXRpbmdSZW5kZXJT
ZXJ2ZXJQb3J0KCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7
IH0KQEAgLTU3NCw2ICs1NzIsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBIYXNoTWFwPFN0
b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFNYXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsK
KyAgICAKKyAgICAvLyBQcmV3YXJtZWQgV2ViUHJvY2Vzc2VzIGRvIG5vdCBoYXZlIGFuIGFzc29j
aWF0ZWQgc2Vzc2lvbklEIHlldCwgd2hpY2ggaXMgd2h5IHRoaXMgaXMgYW4gb3B0aW9uYWwuCisg
ICAgLy8gQnkgdGhlIHRpbWUgdGhlIFdlYlByb2Nlc3MgZ2V0cyBhIFdlYlBhZ2UsIGl0IGlzIGd1
YXJhbnRlZWQgdG8gaGF2ZSBhIHNlc3Npb25JRC4KICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25J
RD4gbV9zZXNzaW9uSUQ7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378782</attachid>
            <date>2019-09-13 21:15:06 -0700</date>
            <delta_ts>2019-09-13 21:18:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201789-20190913211442.patch</filename>
            <type>text/plain</type>
            <size>105295</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmU3ZDgzYTBiYTM3M2U0
YjcyNWNjMTNmYTE0YjIxOThiMmE5NjUuLjE3ZjQ0NmY3MTM2NDAyN2I2NzYwZTI5ZDllYzlmZThk
ZjU0ZWMwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEzIEBACisyMDE5LTA5LTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRo
ZSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vz
c2lvbiBwZXIgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAxNzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRoZSBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgQXMgYSByZXN1bHQsIHdlIG5vIGxvbmdlciBuZWVkIHRvIHBhc3MgdGhlIHNlc3Npb25J
RCBpbiBlYWNoIElQQyBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZQorICAgICAgICBOZXR3b3Jr
UHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRD
aGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRy
YWNraW5nUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vzc2lvbklEIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0
YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1
bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpibG9iU2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0Ns
aWVudENvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJv
bVBhcmVudDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsQ2hhbmdlRG9jdW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25X
aXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpzZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmRlbGV0ZUNvb2tpZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnNlc3Npb25JRCBjb25zdCk6CisKIDIwMTktMDktMTEgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIEFSIFF1aWNrTG9v
ayB0byB0cmlnZ2VyIHByb2Nlc3NpbmcgaW4gdGhlIG9yaWdpbmF0aW5nIHBhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjBjMmVmNzc4MWZmODAzMjcyMzljOThjZjVjYzRiMDli
OGZmYWZkZC4uODYzN2QyZjRiNmFhZDRlYzBhNTYxNDI3MGYxM2RlYjI5ZDUyMGQxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc2LDE0ICs3NiwxNSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK1JlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIGNv
bm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MobmV0d29ya1Byb2Nlc3MsIHdlYlByb2Nlc3NJZGVudGlmaWVy
LCBzZXNzaW9uSUQsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKLU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCitOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiAg
ICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgICwgbV9tZG5zUmVnaXN0ZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTExMyw3ICsx
MTQsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CisgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwogI2VuZGlmCiB9CiAKQEAgLTIwNCwxNyArMjA1LDE2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3dlYklE
QkNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV93ZWJJREJDb25uZWN0aW9ucy5lbmQoKSkKLSAgICAgICAgICAgIGl0ZXJh
dG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIGlmIChtX3dlYklEQkNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3dlYklEQkNvbm5lY3Rp
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgaWYgKG1fc3dDb25uZWN0
aW9uKQorICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTI2OSw4ICsyNjksOCBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOworICAgICAgICBpZiAo
bV9zd0Nvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtMzE0LDEzICszMTQsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBhdXRvIGlkYkNvbm5lY3Rp
b25zID0gc3RkOjpleGNoYW5nZShtX3dlYklEQkNvbm5lY3Rpb25zLCB7IH0pOwotICAgIGZvciAo
YXV0byYgY29ubmVjdGlvbiA6IGlkYkNvbm5lY3Rpb25zLnZhbHVlcygpKQotICAgICAgICBjb25u
ZWN0aW9uLT5kaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOworICAgIGlmIChhdXRvIGlkYkNv
bm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCQ29ubmVjdGlvbiwgeyB9KSkKKyAgICAg
ICAgaWRiQ29ubmVjdGlvbi0+ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1bnJlZ2lzdGVyU1dDb25uZWN0
aW9ucygpOworICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCkBAIC0zMzIsMjAgKzMzMSwyMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSQogewogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiB1cmwsIFN0
cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
IW1fbmV0d29ya1NvY2tldFN0cmVhbXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIFdlYkNv
cmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiB0b2tlbiA9IHsgfTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+c291cmNlQXBwbGljYXRp
b25BdWRpdERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5zZXQo
aWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCksIFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmll
ciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0
cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdv
cmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHVybCksIG1fc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlv
biwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtTb2NrZXRDaGFubmVscy5jb250YWlucyhpZGVu
dGlmaWVyKSk7Ci0gICAgaWYgKGF1dG8gY2hhbm5lbCA9IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpj
cmVhdGUoKnRoaXMsIHNlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQor
ICAgIGlmIChhdXRvIGNoYW5uZWwgPSBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKCp0aGlz
LCBtX3Nlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQogICAgICAgICBt
X25ldHdvcmtTb2NrZXRDaGFubmVscy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjaGFubmVsKSk7
CiB9CiAKQEAgLTM3NCw5ICszNzMsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZW5kU3VzcGVuc2lvbigpCiAjZW5kaWYKIH0KIAorTmV0d29ya1Nlc3Npb24qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpuZXR3b3JrU2Vzc2lvbigpCit7CisgICAgcmV0dXJu
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24obV9zZXNzaW9uSUQpOworfQorCiBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApAQCAtNDkwLDMxICs0OTQsMzEgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVj
b25uZWN0aW8KICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGlkRmluaXNoUHJlY29ubmVjdGlvbihwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpLCAwKTsKIH0KIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oY29uc3QgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbigpCiB7Ci0gICAgaWYgKHNlc3Npb25JRCAhPSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgaWYgKG1fc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Mo
KS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCkpCiAgICAgICAgICAgICByZXR1cm4gKnN0b3Jh
Z2VTZXNzaW9uOwogCiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dz
aW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3
b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgogICAgICAgICAvLyBG
SVhNRTogRmluZCBhIHdheSB0byB0cmFjayBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb25zIG1vcmUg
cmlnb3JvdXNseS4KICAgICAgICAgTE9HX0VSUk9SKCJOb24tZGVmYXVsdCBzdG9yYWdlIHNlc3Np
b24gd2FzIHJlcXVlc3RlZCwgYnV0IHRoZXJlIHdhcyBubyBzZXNzaW9uIGZvciBpdC4gUGxlYXNl
IGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0IGRpc2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGlu
IHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3RlZCByYWNlLiIpOwogICAgIH0KLSAgICByZXR1cm4g
bmV0d29ya1Byb2Nlc3MuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgcmV0dXJuIG5ldHdv
cmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewot
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vz
c2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8v
IEluIGNhc2UgYSByZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBzZXJ2aWNlIHdvcmtlciwgd2UgZG8g
bm90IGhhdmUgeWV0IHRoZSBhYmlsaXR5IHRvIGNvbnZlcnQgdGhlIGxvYWQuCiAgICAgaWYgKCFt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpIHsKLSAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2Fk
SUQsIHJlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIo
KS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTI3LDEyICs1MzEsMTIgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2kKICAgICBsb2FkZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVl
c3QsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CisgICAgYXV0byYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBhdXRvIHJlc3Vs
dCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
KSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkK
ICAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24o
KnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24s
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBw
YWdlSUQsIFdURjo6bnVsbG9wdCk7CiAgICAgfQpAQCAtNTQwLDEwNCArNTQ0LDEwNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKIHsKLSAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCiAgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyksIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKICAg
ICB9CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZXNFbmFibGVkKCkpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKCkuY29va2llc0VuYWJsZWQoKSk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lv
bihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKCkuY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IHJlc3VsdDsKLSAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBz
ZXNzaW9uSUQpLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKKyAgICBzdG9yYWdlU2Vzc2lvbigpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsK
KyAgICBzdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIHNlc3Npb24t
PmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5cGUpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJs
b2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lv
bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNV
UkwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxG
cm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
ZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoLCBudWxscHRyKSwgY29udGVu
dFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5k
KQogewotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CiAgICAg
aWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlm
ICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uID8gc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
YmxvYlNpemUodXJsKSA6IDApOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKQEAgLTY2NywyMSArNjcxLDIxIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShmcmFtZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7Ci0gICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3Rv
cmFnZVNlc3Npb24obV9zZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Y2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdlSUQpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewog
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBbXSB7IH0pOwogICAgIH0KQEAgLTY5
Nyw5ICs3MDEsOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYQogICAgIH0KIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzA5LDkgKzcxMyw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHBy
b21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nl
c3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpIHsKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9y
YWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgd2ViUGFn
ZUlELCB3ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzIxLDkgKzcyNSw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
OlllcywgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVy
UGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5y
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzKSwgb3BlbmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikpOwogICAgIH0K
QEAgLTc0NSw5ICs3NDksOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJj
ZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291
cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9u
SUQpCitPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJj
ZSkKIHsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgaWYgKG1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAv
LyBFaXRoZXIgZ2V0IHRoZSBleGlzdGluZyByb290IGFjdGl2aXR5IHRyYWNrZXIgZm9yIHRoaXMg
cGFnZSBvciBjcmVhdGUgYQpAQCAtODQxLDM4ICs4NDUsMzUgQEAgc2l6ZV90IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNvdXJjZUxv
YWRJZGUKIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIgLSAlIiBQUkl1NjQsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKLSAgICBBU1NFUlQoIW1f
d2ViSURCQ29ubmVjdGlvbnMuY29udGFpbnMoc2Vzc2lvbklELnRvVUludDY0KCkpKTsKKyAgICBM
T0coSW5kZXhlZERCLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaElE
QkNvbm5lY3Rpb25Ub1NlcnZlciAtICUiIFBSSXU2NCwgbV9zZXNzaW9uSUQudG9VSW50NjQoKSk7
CisgICAgQVNTRVJUKCFtX3dlYklEQkNvbm5lY3Rpb24pOwogICAgIAotICAgIG1fd2ViSURCQ29u
bmVjdGlvbnMuYWRkKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCkpOworICAgIG1fd2ViSURCQ29ubmVjdGlvbiA9IFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3MsIG1fY29ubmVj
dGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciwgbV9zZXNzaW9uSUQpOwogfQogI2Vu
ZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCiB7Ci0gICAg
YXV0byBzd0Nvbm5lY3Rpb25zID0gV1RGTW92ZShtX3N3Q29ubmVjdGlvbnMpOwotICAgIGZvciAo
YXV0byYgc3dDb25uZWN0aW9uIDogc3dDb25uZWN0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc3dDb25uZWN0aW9uKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5zZXJ2ZXIoKS5yZW1v
dmVDb25uZWN0aW9uKHN3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgaWYg
KG1fc3dDb25uZWN0aW9uKQorICAgICAgICBtX3N3Q29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3Zl
Q29ubmVjdGlvbihtX3N3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiB7Ci0gICAgYXV0byYgc2VydmVyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0
byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29y
a1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3
U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwg
bV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLCBtX3Nlc3Npb25JRCk7
CiAKLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAg
ICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlc3Npb25JRCwgbWFrZVdlYWtQdHIoKmNvbm5lY3Rpb24p
KTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uKTsKKyAgICBtX3N3Q29ubmVjdGlvbiA9IG1h
a2VXZWFrUHRyKCpjb25uZWN0aW9uKTsKICAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3Zl
KGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZlciA9IG1f
bmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3RzKHNlc3Npb25JRCkpCisg
ICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lv
bklmRXhpc3RzKG1fc2Vzc2lvbklEKSkKICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0g
bWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nl
c3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0
KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWZiMGM5Y2QzNDE2
N2I2ZGNjYjBjOTE5ZWI2Y2RlMzQyODdmNWJmZS4uODgyNDFlM2RlZWIwZDM2MTgxMTI1ZTVmNTc4
MGNhM2I1YmIyZDgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtODQsOCArODQsMTEg
QEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHB1YmxpYzoKICAgICB1c2lu
ZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogCi0gICAg
c3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBOZXR3b3JrU2Vz
c2lvbiogbmV0d29ya1Nlc3Npb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KQEAgLTE0
MCw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmV0d29ya0xvYWRJbmZvcm1hdGlvbkJ5
SUQucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNv
dXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3Vy
Y2UpOwogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKQEAgLTE1Miw5ICsxNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6SGFzQWN0aXZpdHkpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRG
aW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwpAQCAtMTc2LDQwICsxODAsNDAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQg
cGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lID0geyB9KTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgIHZvaWQgY29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwot
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgZW5kKTsKLSAgICB2b2lkIGJsb2JTaXplKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7Ci0gICAgdm9pZCB3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKKyAg
ICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgdm9pZCBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0Vu
YWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIGdldFJhd0Nv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGlu
dDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIAotICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFt
KFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7
CisgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgdWludDY0X3QpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
dWludDY0X3QgaWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICAvLyBNZXNzYWdlcyBoYW5kbGVycyAoTW9kZXJuIElEQikuCi0gICAgdm9pZCBlc3RhYmxpc2hJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNo
SURCQ29ubmVjdGlvblRvU2VydmVyKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCk7Ci0gICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTV0Nv
bm5lY3Rpb25zKCk7CisgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKKyAg
ICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAog
ICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydDIpOwpAQCAtMjMxLDE0ICsyMzUsMTQgQEAgcHJpdmF0ZToKICAgICBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFy
UGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNzaW9uUmVzb3VyY2VMb2Fk
RGF0YSYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CisgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTI4MiwxMCArMjg2LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAogICAgIElQQzo6Q29ubmVj
dGlvbiogcGF5bWVudENvb3JkaW5hdG9yQ29ubmVjdGlvbihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIGZpbmFsOwogICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGlu
YXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFM
OjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9y
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZp
bmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5
cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyAgICBjb25zdCBT
dHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQ
YXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1l
c3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKICAgICB2b2lkIHBh
eW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CkBAIC0yOTMsNiAr
Mjk3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8TmV0
d29ya1NvY2tldFN0cmVhbT4+IG1fbmV0d29ya1NvY2tldFN0cmVhbXM7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPj4gbV9uZXR3b3Jr
U29ja2V0Q2hhbm5lbHM7CkBAIC0zMTUsMTEgKzMyMCwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Pj4gbV93ZWJJREJDb25uZWN0aW9uczsKKyAgICBS
ZWZQdHI8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX3dlYklEQkNvbm5lY3Rpb247CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAg
ICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRD
b25uZWN0aW9uOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGQxMzU0YTI1YzIwNzg4MDMyNzMyZDRkNjdlY2I0NTMwODRmMWJkOTYuLjky
MDViYmYxOWVjYjkwYjJlODg0ODQ2MDcxYzJkNzA4NzgxNjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzEsMzggKzMxLDQxIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQ
cmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAgICAgUHJlY29ubmVjdFRvKHVpbnQ2NF90IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQotICAgIENvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpCisgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0
ZWROYW1lKQorICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5nIGNvb2tpZVN0cmluZykKLSAg
ICBDb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGVuYWJs
ZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKSBTeW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgRGVsZXRlQ29va2llKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAg
Q29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNFbmFibGVk
KCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpi
b29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAt
PiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5j
aHJvbm91cworICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91
cworICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAotICAgIFJl
Z2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxl
LCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMs
IFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgVVJMIHNyY1VSTCkKLSAgICBSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmws
IFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQot
ICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
IHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKQotICAgIEJsb2JT
aXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3Vs
dFNpemUpIFN5bmNocm9ub3VzCi0gICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxT
dHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmws
IFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25I
YW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkK
KyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3Ry
aW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBl
bmQpCisgICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAgICBCbG9iU2l6ZShVUkwgdXJs
KSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKKyAgICBXcml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+
IGZpbGVOYW1lcykgQXN5bmMKIAogICAgIFNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCi0gICAgQ3JlYXRlU29ja2V0U3RyZWFtKFVSTCB1cmws
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRf
dCBpZGVudGlmaWVyKQotICAgIENyZWF0ZVNvY2tldENoYW5uZWwoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3RvY29s
LCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIENyZWF0ZVNvY2tldFN0cmVhbShVUkwgdXJsLCBT
dHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgQ3JlYXRlU29j
a2V0Q2hhbm5lbChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKTsKLSAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCisgICAgUmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOworICAgIENsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KTsKKyAgICBMb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQorICAgIAorICAgICMgRklYTUU6IFN0b3AgcGFzc2luZyBzZXNzaW9uSURzLgogICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9u
SUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+IHN0YXRpc3RpY3Mp
Ci0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2Vzcykg
QXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCi0gICAgUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBvcGVuZXJEb21haW4pCisKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BG
cmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4g
KGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBl
bnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKICNlbmRpZgogCiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
U3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBk
ZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtNzUs
MTIgKzc4LDEyIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBUYWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3ModWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyBuZXR3b3JrTWV0cmljcykgU3luY2hyb25vdXMKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotICAgIEVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKCkKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgRXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQorICAgIEVz
dGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQogI2VuZGlmCiAKICAgICBDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MSwgc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBwb3J0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTkxZjFiM2Y4MTNiZTZmMWQ0MDg4MmVjMjNhMjk0
ZjQ4MTNhYjNmYi4uM2ZmNmU5ZDM4NjVjODdhMDdhNGFiNDBiNTMzMDVjODIxNDEzNzk2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIsIElQQzo6QXR0YWNobWVudD4+CiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBpcGNDb25uZWN0aW9uID0gY3JlYXRlSVBDQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIG5ld0Nvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRl
KCp0aGlzLCBpZGVudGlmaWVyLCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CisgICAgYXV0byBuZXdD
b25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywg
aWRlbnRpZmllciwgc2Vzc2lvbklELCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CiAgICAgYXV0byYg
Y29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb24uZ2V0KCk7CiAKICAgICBBU1NFUlQoIW1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwZWRmMWQ1MGFjM2M5Y2U2MjY1
NTVlNTdhMzg5ZTg5OTgxMmNkNzdhLi5lYjk4NDJkMTdhZmNlMzUxNzk0ZTNhYTU0ZjFmNjM5MmJl
OGE5YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0zODgsNyArMzg4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJz
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYm
KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGEzZjdlYTMyNjRh
ZmYwMWQ4NmNkMDc5MmIxMTc1NTQzM2FlZjJkMDYuLjczOGQ3MGFmOWFmZDQwZWY4NjQ4YmU3ODA0
NjVlYmQ0OTU3NzY2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
IHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9u
IGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wg
aWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU4NGI3NjkwMGJjZDMxZjQxZjRlZDEy
MTQ1MmJlNzZmODQ4NWE1YjIuLmNkZTlmMjA1YTk1NThlZDg5ZGQ3MDc4ZGVmNGQzN2Q3NmRjOWMy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdS
ZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIHNlc3Npb25JRCgpKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNl
KCkpOwogCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAgIG1fd2FzU3RhcnRlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCmluZGV4IGM4Yjg2YzUx
MTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMuLjU4OWQ3ODMwYmQ4MTY0OThiZGUyNzZi
M2E3YTIxMmRhYmFmMGI3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9T
Lm1tCkBAIC01MiwzMCArNTIsMzAgQEAgVUlWaWV3Q29udHJvbGxlciAqTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWUKICAgICByZXR1
cm4gbmlsOwogfQogCi1jb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitjb25zdCBT
dHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JC
b3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25D
b2NvYSo+KG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5l
dHdvcmtTZXNzaW9uKCkpKQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Ym91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLWNvbnN0IFN0cmlu
ZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckNURGF0
YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK2NvbnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckNURGF0YUNvbm5lY3Rpb25TZXJ2aWNl
VHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCiB7Ci0gICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4obV9uZXR3b3JrUHJv
Y2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4obmV0d29ya1Nlc3Npb24oKSkpCiAg
ICAgICAgIHJldHVybiBzZXNzaW9uLT5jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKTsKICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotY29uc3QgU3RyaW5nJiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQorY29uc3QgU3RyaW5nJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKIHsKLSAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPihtX25ldHdvcmtQcm9jZXNz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0
YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPihuZXR3b3JrU2Vzc2lvbigpKSkKICAgICAg
ICAgcmV0dXJuIHNlc3Npb24tPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwog
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1jb25zdCBTdHJpbmcmIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCitjb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewotICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG1fbmV0d29y
a1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5ldHdvcmtTZXNzaW9uKCkp
KQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCk7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aAppbmRleCBmMzNjYWIzMDVmZWUxMjc0ZmFhN2IyMTgzOGU5YmI3ZWY3NmJiZjI3Li5kNmVjYTg5
YmQxN2E4NDBkZjM4ZGJkNTAzMjI1MTBmNzJmNzEzYWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgK
QEAgLTc4LDkgKzc4LDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRl
ZmF1bHQ7CiAKICAgICAgICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIHBheW1lbnRDb29yZGlu
YXRvckNvbm5lY3Rpb24oY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVy
ZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6OlNl
c3Npb25JRCkgPSAwOwotICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3Jk
aW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpID0gMDsKLSAgICAgICAgdmlydHVhbCBj
b25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lv
bklEKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0
b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0
b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50
Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXlt
ZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UmKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGM0ZjJmODBkNjgyZDUyMDA4NTZiODQ1
YmY2YmFiYmRjYzA2YWE4ZmIuLjMyMzFhZWU5ZjM2MTJlYmYwYjlmN2NjMjA2YjBkMjM0Y2Y4MTg3
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMjc4
LDE3ICsyNzgsMTcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGMKIAogI2lmIEhBVkUoUEFTU0tJ
VF9CT1VORF9JTlRFUkZBQ0VfSURFTlRJRklFUikKICAgICAvLyBGSVhNRTogUmVtb3ZlIC1yZXNw
b25kc1RvU2VsZWN0b3I6IGNoZWNrIG9uY2UgcmRhcjovL3Byb2JsZW0vNDgwNDE1MTYgaXMgd2lk
ZWx5IGF2YWlsYWJsZSBpbiBTREtzLgotICAgIGF1dG8mIGJvdW5kSW50ZXJmYWNlSWRlbnRpZmll
ciA9IG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvckJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigq
dGhpcywgc2Vzc2lvbklEKTsKKyAgICBhdXRvJiBib3VuZEludGVyZmFjZUlkZW50aWZpZXIgPSBt
X2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoKnRoaXMp
OwogICAgIGlmICghYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyLmlzRW1wdHkoKSAmJiBbcmVzdWx0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVy
OildKQogICAgICAgICBbcmVzdWx0IHNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjpib3VuZElu
dGVyZmFjZUlkZW50aWZpZXJdOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB1
c2luZyByZXNwb25kc1RvU2VsZWN0b3IsIHRoaXMgc2hvdWxkIHVzZSBhIHByb3BlciAjaWYgdmVy
c2lvbiBjaGVjay4KLSAgICBhdXRvJiBidW5kbGVJZGVudGlmaWVyID0gbV9jbGllbnQucGF5bWVu
dENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCp0aGlzLCBzZXNz
aW9uSUQpOworICAgIGF1dG8mIGJ1bmRsZUlkZW50aWZpZXIgPSBtX2NsaWVudC5wYXltZW50Q29v
cmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKnRoaXMpOwogICAgIGlm
ICghYnVuZGxlSWRlbnRpZmllci5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjopXSkKICAg
ICAgICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6YnVuZGxl
SWRlbnRpZmllcl07CiAKLSAgICBhdXRvJiBzZWNvbmRhcnlJZGVudGlmaWVyID0gbV9jbGllbnQu
cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCp0
aGlzLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIHNlY29uZGFyeUlkZW50aWZpZXIgPSBtX2NsaWVu
dC5wYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
KnRoaXMpOwogICAgIGlmICghc2Vjb25kYXJ5SWRlbnRpZmllci5pc0VtcHR5KCkgJiYgW3Jlc3Vs
dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25k
YXJ5SWRlbnRpZmllcjopXSkKICAgICAgICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXI6c2Vjb25kYXJ5SWRlbnRpZmllcl07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMmEyOGIx
NTkyOGQ2OGU3NGJiOTVkMDZmOWVjMTY1ZTI3YzJlMjU1Ny4uNzNjZmQxYmViMTUyMTQxMGFlODZl
MDlmNTBmZTMyN2E0NDQxNTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTIyOCwyMSArMjI4LDE4IEBAIElQQzo6Q29u
bmVjdGlvbiogV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKGNvbnN0
IFdlYlBheW1lbnRDb29yCiAgICAgcmV0dXJuIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCk7CiB9
CiAKLWNvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JCb3VuZElu
dGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCitjb25zdCBTdHJpbmcmIFdlYlBhZ2VQcm94eTo6cGF5bWVu
dENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklE
ID09IHdlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSk7CiAgICAgcmV0dXJuIHdlYnNpdGVE
YXRhU3RvcmUoKS5ib3VuZEludGVyZmFjZUlkZW50aWZpZXIoKTsKIH0KIAotY29uc3QgU3RyaW5n
JiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKK2NvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRp
bmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmKQogewotICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9u
SUQgPT0gd2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKICAgICByZXR1cm4gd2Vic2l0
ZURhdGFTdG9yZSgpLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwogfQogCi1j
b25zdCBTdHJpbmcmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
JiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6
OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihj
b25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChz
ZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB3ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOwog
ICAgIHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDUxYjNlOTA4MDY2ZTVmOGM0MWVk
ODAxZjYxYWU5YjEwMTdkZjQ4NWMuLjg1MWI1ODA4M2RmODI5YmI5Y2YwNzljOTU3NmYxMjdkNDM1
MTIwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYg
d2ViUHJvY2VzCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6b3Blbk5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbih1aW50NjRfdCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXIsIFdlYlByb2Nl
c3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5KQogewotICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkg
fSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlByb2Nlc3NQcm94eSA9
IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmll
cl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdl
YlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBmZDk5ZmMzZGQwOGQwZTM2ZjgzYzM5Mzc0M2I0MzQyNzlkYWJmMDU3Li4yMTRhMDBkMTdlMDA3
Y2JlZTViMDVkNTFjMjgzZDdlNGNkZDhiMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMjA5NCw5ICsyMDk0LDkgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50CiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBJ
UEM6OkNvbm5lY3Rpb24qIHBheW1lbnRDb29yZGluYXRvckNvbm5lY3Rpb24oY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKLSAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRD
b29yZGluYXRvckJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKLSAgICBjb25zdCBTdHJpbmcmIHBh
eW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKLSAgICBj
b25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lv
bklEKSBmaW5hbDsKKyAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvckJvdW5kSW50
ZXJmYWNlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFs
OworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7
CisgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5h
bDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvclJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6
U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQzYzgyZjA0Njg0OGM4Y2QwNTliYzI1NjliZjRj
YTI5M2E0ZmYxNGEuLjVkNjNkNDUzODEzNzUzNTViNjU5NDJhYjM2MTVmMjYwMDg1YzhmYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ3Niw2
ICsxNDc2LDEyIEBAIFdlYlByb2Nlc3NQb29sJiBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NQb29s
KCkgY29uc3QKICAgICByZXR1cm4gKm1fcHJvY2Vzc1Bvb2wuZ2V0KCk7CiB9CiAKK1BBTDo6U2Vz
c2lvbklEIFdlYlByb2Nlc3NQcm94eTo6c2Vzc2lvbklEKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV93ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNz
aW9uSUQoKTsKK30KKwogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAKIHZvaWQgV2ViUHJvY2Vzc1By
b3h5Ojp0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1ZDQzNWJmM2U4ZDBj
NmYxMTQ5OTQ5MjEwYTQzMmViYmEyZTZmMjdiLi4yN2Y2YjM2MThmMzlhNDAyMDExODA0MGVmN2Zl
NzYyMDQzOTBiYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdl
YnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1
cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShX
ZWJzaXRlRGF0YVN0b3JlJik7CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3Q7CiAKICAgICBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9ySWRlbnRpZmll
cihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSog
d2ViUGFnZShXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDZjMmYxM2QwNjYwNTU3NmIzYWE4YjU0OTNh
ZWY5NzUzMThmY2QzOTQuLjk3MzNhNjMwZjI3ZTFjMjA0MzU2Njg5YWYwNzI1MGQ5YmUxYmUyN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAt
NjIsNyArNjIsNyBAQCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNz
aW9uSUQpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub1NlcnZlcihJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6Y3JlYXRlKCp0aGlzKSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKHNl
c3Npb25JRCksIDApOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpFc3RhYmxpc2hJREJDb25uZWN0aW9uVG9TZXJ2ZXIoKSwgMCk7CiB9CiAKIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6fldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5j
cHAKaW5kZXggNzgxMTIwNzc4NGFmNjBhMmFkZWM1NmNhYTU4NjRhNzFiM2FkMTIzYy4uNjZmNDQy
YzI5Zjk5NzQxZTRlMTY1Y2RkYTkxMjhiOGY2OTVlMTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcApAQCAtMzYs
NyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNl
PiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwg
UmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGU7CiAK
QEAgLTQ0LDM5ICs0NCwzOSBAQCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVC
bG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJgogICAgIGlmICghZmls
ZS0+cGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlKGZpbGUtPnBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGV4dGVu
c2lvbkhhbmRsZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmws
IGZpbGUtPnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIGZpbGUtPnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBj
b250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJs
b2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxv
YlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGJsb2JQYXJ0
cywgY29udGVudFR5cGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JQYXJ0
cywgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0
ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgc3JjVVJMKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZWdpc3RlckJsb2JVUkxGcm9tVVJMIHsgc2Vzc2lvbklELCB1cmwsIHNyY1VSTCB9LCAwKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwgeyB1cmwsIHNyY1VSTCB9LCAwKTsKIH0KIAot
dm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVy
QmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoZmls
ZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQs
IHVybCwgc3JjVVJMLCBmaWxlLT5wYXRoKCksIGNvbnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgp
LCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lz
dGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQordm9p
ZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFVSTCYgdXJsKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwp
LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHVybCksIDApOwogfQogCi12b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2Uoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsK
IH0KIAotdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQordW5zaWduZWQgbG9uZyBsb25n
IEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgdWludDY0X3QgcmVzdWx0U2l6ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXpl
KHNlc3Npb25JRCwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpCbG9iU2l6ZTo6UmVwbHkocmVzdWx0U2l6ZSksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6QmxvYlNp
emUodXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6
ZTo6UmVwbHkocmVzdWx0U2l6ZSksIDApKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4g
cmVzdWx0U2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDg3ODAwNmVkOTUz
MTIwMDQzY2E5ZjA5M2VhYWRlYzcwNmMzNGIxOTQuLmUxOGYwYWU3OGYyZTYyNTdmZDgyNDY5OTUz
ZmUzMjQ1NjNlYTlkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjEwLDkgKzIx
MCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTCiB7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKHNlc3Npb25JRCwgYmxvYlVSTHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBS
ZXNvdXJjZUVycm9yJiYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKQEAgLTI2
MCw4ICsyNjAsOCBAQCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXImIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2VzcwogV2ViU1dDbGllbnRDb25uZWN0
aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9y
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25J
RC5pc1ZhbGlkKCkpOwotICAgIHJldHVybiAqbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmVuc3Vy
ZShzZXNzaW9uSUQsIFtzZXNzaW9uSURdIHsKLSAgICAgICAgcmV0dXJuIFdlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6Y3JlYXRlKHNlc3Npb25JRCk7CisgICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNC
eVNlc3Npb24uZW5zdXJlKHNlc3Npb25JRCwgW10geworICAgICAgICByZXR1cm4gV2ViU1dDbGll
bnRDb25uZWN0aW9uOjpjcmVhdGUoKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMmI0ZWExYTc5NGRhZTkzZTgzYjgxNDVhNTAx
YjhjYTMzNDJhZGI5Ni4uZTg4NDlmZWMxN2JhMDY4MmViYmRhNGQzZGY4OTcxYjZkMWUxOTRiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGEgc2luZ2xlIGNvbm5lY3Rpb24uCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwg
UmVmUHRyPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbjsK
ICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggM2U3OWY5YTdlMTRlNWExODIyZjZiNGU2ZDVlYzJi
ZDdkYjM2MjM2ZC4uY2M3ZWM0MmVmMTViMWUzMTJiMjQ0Mzc4YzYzNjFkMGMxZTg2YTUzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3Rh
dHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAg
aWYgKHJlcXVlc3QtPnVybCgpICE9IHVybCAmJiBtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQt
PmRpZFVwZ3JhZGVVUkwoKTsKIAotICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVsIHsgbV9kb2N1
bWVudC0+c2Vzc2lvbklEKCksICpyZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcigpIH0pOwor
ICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVsIHsgKnJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlm
aWVyKCkgfSk7CiAgICAgcmV0dXJuIENvbm5lY3RTdGF0dXM6Ok9LOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRl
eCAxZmI2OTYxZmZmMGJhZDYzMWRlMTA5MmMwNGNmMjY4ZTJjMjc4YzRjLi4zY2E5MDA0MmI3NTI3
OWJmMzkxYmM1MzJhZDE5MWIyNmJlYTYzODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTgyLDExICs4MiwxMSBA
QCBSZWY8V2ViU29ja2V0U3RyZWFtPiBXZWJTb2NrZXRTdHJlYW06OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNv
Y2tldFN0cmVhbSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uKSk7
CiB9CiAKLVdlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQorV2ViU29ja2V0U3RyZWFt
OjpXZWJTb2NrZXRTdHJlYW0oY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjYWNoZVBh
cnRpdGlvbikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkKICAgICAsIG1f
Y2xpZW50KGNsaWVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVNvY2tldFN0cmVhbSh1cmwsIHNlc3Npb25J
RCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIoKSksIDApOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlU29ja2V0
U3RyZWFtKHVybCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIoKSksIDApOwogCiAgICAgTG9j
a0hvbGRlciBsb2NrZXIoZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jayk7CiAgICAgQVNTRVJU
KCFnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5jb250YWlucyhpZGVudGlmaWVyKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwCmluZGV4IGE4YWE2Nzk2MjI5MmFhOGEyM2NmYTY2OGI5ZjY3ZjVkMzQ3
NDc3MDkuLjA2YTRjYzdkYjdhMThjMTE4N2JhZmM2NTg4NTU0MzJjNDVlYjJhZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmNwcApAQCAtNTUsMTMgKzU1LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogCi1XZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNX
Q2xpZW50Q29ubmVjdGlvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQotICAgICwgbV9pZGVudGlmaWVyKFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKK1dl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6V2ViU1dDbGllbnRDb25uZWN0aW9uKCkKKyAgICA6IG1faWRl
bnRpZmllcihQcm9jZXNzOjppZGVudGlmaWVyKCkpCiAgICAgLCBtX3N3T3JpZ2luVGFibGUobWFr
ZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigpKQogewotICAgIEFTU0VSVChtX3Nlc3Npb25J
RC5pc1ZhbGlkKCkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNX
U2VydmVyQ29ubmVjdGlvbiB7IH0pOwogfQogCiBXZWJTV0NsaWVudENvbm5lY3Rpb246On5XZWJT
V0NsaWVudENvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCBlZmVmMzZiY2FjZDI4NTQ1
N2JlMDE0ZjhkNGNiYzlkYTY5OWMyZjhiLi4yN2ZlYTJjMWIyNGI4YzJhOTY0YzRlOTY3ZDNmN2Vj
YTM4ZDAzNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgotI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQ5LDcgKzQ4LDcgQEAgY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3Zp
ZGVyOwogCiBjbGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6U1dDbGllbnRDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7IH0KKyAg
ICBzdGF0aWMgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5lY3Rpb24pOyB9CiAgICAgfldlYlNXQ2xpZW50Q29u
bmVjdGlvbigpOwogCiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQpAQCAtNjksMTAgKzY4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzeW5jVGVybWlu
YXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKIAotICAg
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9
Ci0KIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViU1dDbGllbnRDb25uZWN0aW9uKFBBTDo6U2Vz
c2lvbklEKTsKKyAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgc2NoZWR1
bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFs
OwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKQEAgLTk4LDE0ICs5NSwxMyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVuY3Rpb248dm9pZCgpPiYm
IHRhc2spOwogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGNvbnN0IGZpbmFsOwotICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQudG9VSW50NjQoKTsgfQorICAgIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsg
fQogCiAgICAgdm9pZCBzZXRTV09yaWdpblRhYmxlU2hhcmVkTWVtb3J5KGNvbnN0IFNoYXJlZE1l
bW9yeTo6SGFuZGxlJik7CiAgICAgdm9pZCBzZXRTV09yaWdpblRhYmxlSXNJbXBvcnRlZCgpOwog
CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAg
ICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ICAgICBVbmlxdWVSZWY8V2ViU1dPcmlnaW5UYWJsZT4gbV9zd09yaWdpblRhYmxlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGU4OWQwYjM3ZGU4OTEyMGU2NDNiNDcz
MTc0MWQyOGExMTYzODZhOWQuLmU2MzNjNzdjNzFmMGIwZWY3NTQ5NWQxMDQyNjYyMmQ5OTNkMjM2
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTEwMCw3ICsxMDAs
NyBAQCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbgogI2VuZGlmCiB7CiAgICAgdXBkYXRlUHJlZmVy
ZW5jZXNTdG9yZShzdG9yZSk7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29u
dGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7Cisg
ICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3Jl
Z2lzdHJhYmxlRG9tYWluIH0sIDApOwogfQogCiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6fldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODMwZTVjODE1ZmE0ODRlM2M3ZjEyN2NjMmU0ZWUz
MTFjNDk0ZDEwMy4uYzU0ZjdkZjkxZjJkNWY0NWUwZTA3ZjA5MWVjMWIwOWE1YzU5MWU0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50MigpCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAobV9mcmFtZVNwZWNpZmljU3RvcmFnZUFj
Y2Vzc0lkZW50aWZpZXIpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
Ci0gICAgICAgICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+c2Vz
c2lvbklELCBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwg
bV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDApOworICAg
ICAgICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPmZyYW1lSUQs
IG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5wYWdlSUQpLCAwKTsKICAg
ICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEY6Om51bGxv
cHQ7CiAgICAgfQogI2VuZGlmCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgVVJMJiBjdXJyZW50VXJs
LCBjb24KIAogICAgIGlmIChtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciAm
JiAhV2ViQ29yZTo6YXJlUmVnaXN0cmFibGVEb21haW5zRXF1YWwoY3VycmVudFVybCwgbmV3VXJs
KSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSgKLSAgICAgICAgICAg
IG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5zZXNzaW9uSUQsIG1fZnJh
bWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5mcmFtZUlELCBtX2ZyYW1lU3BlY2lm
aWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+cGFnZUlEKSwgMCk7CisgICAgICAgICAgICBtX2Zy
YW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9mcmFtZVNwZWNp
ZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDApOwogICAgICAgICBtX2ZyYW1l
U3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKICAgICB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDVmYjNjZjIw
OWEzZTZjMWJlMzkwZGJmOGVhZDkwNDNmZTQzYTE0NDUuLmUxYjRiOWViM2YzODRmNWY1ZmYyOTEz
MWE5M2M4ZmQ2ZGYwYzA2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNw
cApAQCAtNTksMTQgKzU5LDE0IEBAIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcigpCiB7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdl
SWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5l
ckRvY3VtZW50KQogewogICAgIGF1dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7
CiAgICAgUmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07CiAgICAg
aWYgKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAhPSBvcGVuZXJEb21haW4KICAgICAgICAg
JiYgIW9wZW5lckRvY3VtZW50Lmhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NX
aXRoVXNlckludGVyYWN0aW9uKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcykKICAgICAgICAg
JiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uob3BlbmVyVXJsLnN0cmluZygpLCBXVEY6OmJsYW5r
VVJMKCkpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihzZXNz
aW9uSUQsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJE
b21haW4pLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAw
KTsKICAgICAgICAgCiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQg
cmVxdWVzdHMgc2luY2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBv
cGVuZXJEb2N1bWVudC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0
aFVzZXJJbnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwpAQCAtMzY0LDcg
KzM2NCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlv
bldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QKIAogICAgIC8vIFdlIG5vdGlmeSByaWdo
dCBhd2F5IGluIGNhc2Ugb2YgYSB1c2VyIGludGVyYWN0aW9uIGluc3RlYWQgb2Ygd2FpdGluZyB0
aGUgdXN1YWwgNSBzZWNvbmRzIGJlY2F1c2Ugd2Ugd2FudAogICAgIC8vIHRvIHVwZGF0ZSBjb29r
aWUgYmxvY2tpbmcgc3RhdGUgYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkxvZ1VzZXJJ
bnRlcmFjdGlvbihkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9wRnJhbWVEb21haW4pLCAwKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkxvZ1VzZXJJbnRlcmFjdGlvbih0b3BGcmFtZURvbWFpbiksIDApOwogCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fc2hvdWxkTG9nVXNlckludGVyYWN0aW9uKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcApp
bmRleCBmNmM1NTdkNWYwZmQyMDFkYmI1MDUxMTQ3ZWJjMjcwYTViNDVjZjNjLi4zYWI3OGU1Mzlk
N2VlZDliYzVjMjhhZjNlY2JjZWY1MGYwN2Y3YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU3Ry
aW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Zv
ckRPTShkb2N1bWVudC5zZXNzaW9uSUQoKSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMo
KSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZElu
Y2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQs
IHVybCkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNG
b3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gY29va2llU3RyaW5nOwpAQCAtNzQsMjIg
Kzc0LDIyIEBAIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKICAgICB9CiAKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNG
cm9tRE9NKGRvY3VtZW50LnNlc3Npb25JRCgpLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2ll
cygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2ll
U3RyaW5nKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgY29va2llU3RyaW5nKSwgMCk7CiB9CiAKIGJvb2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5h
YmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgYm9v
bCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKGRvY3VtZW50
LnNlc3Npb25JRCgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVz
RW5hYmxlZCgpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNv
b2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAog
ewogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNz
ZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KHNlc3Npb25JRCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJp
bmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShj
b29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1cm4g
eyB9OwogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkID8g
V2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBXZWJDb3JlOjpTZWN1cmVDb29r
aWVzQWNjZXNzZWQ6Ok5vIH07CiB9CkBAIC0xMDMsMTQgKzEwMywxNCBAQCBib29sIFdlYkNvb2tp
ZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdQogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFn
ZUlEKCk7CiAgICAgfQogCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKGRvY3VtZW50LnNl
c3Npb25JRCgpLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8o
ZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQor
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2ll
cygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHko
cmF3Q29va2llcyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHZvaWQgV2ViQ29va2llSmFyOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKGRvY3VtZW50LnNlc3Npb25JRCgpLCB1cmwsIGNvb2tp
ZU5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpLCAwKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNGNlMTAxMjhhYzQwYmNmZGFiNWJkN2QwZmU0YjE4NjRl
YzkyN2IzYS4uYjQ4NWM1NmI0MTE2YWYxYWVhNjYzODBiNzFiYTFkMTUyNDIzNzllNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMjgzLDkg
KzI4Myw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpCiAgICAgYXV0byBwb2xpY3lEb3dubG9h
ZElEID0gbV9wb2xpY3lEb3dubG9hZElEOwogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsK
IAotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBwYWdlKCkgPyBwYWdlKCktPnNlc3Npb25JRCgpIDog
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKLSAgICB3ZWJQcm9jZXNzLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U3RhcnREb3dubG9hZChzZXNzaW9uSUQsIHBv
bGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0
RG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2VzdGVkTmFtZSksIDApOwog
fQogCiB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9j
dW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCkBAIC0zMDcsNyArMzA1LDcgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNv
dXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwKICAgICBl
bHNlCiAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKIAotICAgIHdlYlBy
b2Nlc3MuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQoc2Vzc2lvbklELCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwg
cG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAwKTsKKyAgICB3ZWJQcm9jZXNz
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElE
LCByZXF1ZXN0LCByZXNwb25zZSksIDApOwogfQogCiB2b2lkIFdlYkZyYW1lOjphZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlIG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCBtZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgcmVxdWVzdElEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxY2RjMGI2OWU4
YTQzMjNiYjNhMGNlYjNlZWIyMDFlYjE1YjAyYmYzLi5hOTNhNTgwYzQzMzMwOGY1N2YxYzc2YTM0
ZWEzMjNkYmMxNTNmNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMTMzOCw3ICsxMzM4LDcgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAg
ICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Np
b25JRCgpLCBtX2lkZW50aWZpZXIpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MobV9pZGVudGlmaWVyKSwgMCk7CiAjZW5kaWYKIAogICAg
IG1faXNDbG9zZWQgPSB0cnVlOwpAQCAtNjUzNSwxMiArNjUzNSwxMiBAQCB2b2lkIFdlYlBhZ2U6
OmZyYW1lQmVjYW1lUmVtb3RlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBHbG9iYWxGcmFtZUlk
ZW50aWZpZXImJgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiB2b2lkIFdl
YlBhZ2U6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFp
biwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJhbWUmIGZyYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpIYXNTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCgpLCBXVEZNb3ZlKHN1
YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lLmZyYW1lSUQoKSwg
bV9pZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpIYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3Zl
KHRvcEZyYW1lRG9tYWluKSwgZnJhbWUuZnJhbWVJRCgpLCBtX2lkZW50aWZpZXIpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJhbWUmIGZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQoKSwgV1RGTW92ZShzdWJGcmFt
ZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZS5mcmFtZUlEKCksIG1faWRl
bnRpZmllciwgbV93ZWJQYWdlUHJveHlJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNlc3Np
b25JRCA9IHNlc3Npb25JRCgpLCBwYWdlSUQgPSBtX2lkZW50aWZpZXIsIGZyYW1lSUQgPSBmcmFt
ZS5mcmFtZUlEKCldKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgbXV0YWJsZSB7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVE
b21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWUuZnJhbWVJRCgpLCBtX2lkZW50
aWZpZXIsIG1fd2ViUGFnZVByb3h5SWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZXNzaW9u
SUQgPSBzZXNzaW9uSUQoKSwgcGFnZUlEID0gbV9pZGVudGlmaWVyLCBmcmFtZUlEID0gZnJhbWUu
ZnJhbWVJRCgpXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIG11dGFibGUgewogICAg
ICAgICBpZiAod2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKQogICAg
ICAgICAgICAgZnJhbWUtPmZyYW1lTG9hZGVyQ2xpZW50KCktPnNldEhhc0ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzKHsgc2Vzc2lvbklELCBmcmFtZUlELCBwYWdlSUQgfSk7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWQsIHByb21wdFdhc1Nob3duKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA5YjM0ZWMwNDZmNWYxODkwY2U5NmNkMjA4
NmRjNjdmM2Y0ZjU3MWVmLi5hMGYwMTliNzJmNTU4MWUzOTY5YTA1NDBiYTYyN2I1ODFiZmUwM2Uy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zOTEsOCArMzkx
LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldFNob3VsZFVzZUZvbnRTbW9v
dGhpbmcocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKTsKIAotICAgIGVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwotCiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBh
cmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsKIAogICAgIHJlc2V0UGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaGVzKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKTsKQEAg
LTQ2Miw2ICs0NjAsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcAogICAgICAgICBzdXBwbGVt
ZW50LT5zZXRXZWJzaXRlRGF0YVN0b3JlKHBhcmFtZXRlcnMpOwogCiAgICAgcGxhdGZvcm1TZXRX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAKKyAg
ICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNz
OjpoYXNQYWdlUmVxdWlyaW5nUGFnZUNhY2hlV2hpbGVTdXNwZW5kZWQoKSBjb25zdApAQCAtNjUx
LDYgKzY1MSw4IEBAIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OndlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlEKSBjb25zdAogCiB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsK
KyAgICBBU1NFUlQocGFyYW1ldGVycy5zZXNzaW9uSUQgPT0gc2Vzc2lvbklEKCkpOworCiAgICAg
Ly8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNl
IGR1cmluZyBhIHdpbmRvdy5vcGVuKCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdl
YlBhZ2UgZ2V0cyBjcmVhdGVkIGJvdGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRo
cm91Z2ggdGhlIG5vcm1hbCB3YXkuIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChw
YWdlSUQsIG51bGxwdHIpOwpAQCAtNjY5LDYgKzY3MSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3Jl
YXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKKyAgICBBU1NFUlQoc2Vzc2lvbklEID09
IHRoaXMtPnNlc3Npb25JRCgpKTsKICAgICBBU1NFUlQobV9wYWdlTWFwLmNvbnRhaW5zKHBhZ2VJ
RCkpOwogCiAgICAgcGFnZVdpbGxMZWF2ZVdpbmRvdyhwYWdlSUQpOwpAQCAtMTE5MCw2ICsxMTkz
LDcgQEAgc3RhdGljIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJgogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uJiBX
ZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQobV9zZXNzaW9uSUQpOwog
CiAgICAgLy8gSWYgd2UndmUgbG9zdCBvdXIgY29ubmVjdGlvbiB0byB0aGUgbmV0d29yayBwcm9j
ZXNzIChlLmcuIGl0IGNyYXNoZWQpIHRyeSB0byByZS1lc3RhYmxpc2ggaXQuCiAgICAgaWYgKCFt
X25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKaW5kZXggMjkyOGMxMDk1NGI3ZmNjYmY5MjA1OTZhMjM2OTY3NWE2ODVmN2Q0NS4uMDRm
M2JlZWY3ZGM0MjNlYjc0ZTA1MzFkNWZmMDIzYjExODU0NjdkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xNjIsOSArMTYyLDcgQEAgcHVibGljOgogCiAgICAgSW5q
ZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1
bmRsZS5nZXQoKTsgfQogICAgIAotICAgIC8vIFByZXdhcm1lZCBXZWJQcm9jZXNzZXMgZG8gbm90
IGhhdmUgYW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3aHkgdGhpcyBpcyBh
biBvcHRpb25hbC4KLSAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2VzcyBnZXRzIGEgV2Vi
UGFnZSwgaXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgotICAgIGNvbnN0IE9w
dGlvbmFsPFBBTDo6U2Vzc2lvbklEPiYgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNz
aW9uSUQ7IH0KKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IEFTU0VSVCht
X3Nlc3Npb25JRCk7IHJldHVybiAqbV9zZXNzaW9uSUQ7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQ
b3J0KCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7IH0KQEAg
LTU3NCw2ICs1NzIsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBIYXNoTWFwPFN0b3JhZ2VB
cmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFNYXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsKKyAgICAK
KyAgICAvLyBQcmV3YXJtZWQgV2ViUHJvY2Vzc2VzIGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQg
c2Vzc2lvbklEIHlldCwgd2hpY2ggaXMgd2h5IHRoaXMgaXMgYW4gb3B0aW9uYWwuCisgICAgLy8g
QnkgdGhlIHRpbWUgdGhlIFdlYlByb2Nlc3MgZ2V0cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRl
ZWQgdG8gaGF2ZSBhIHNlc3Npb25JRC4KICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9z
ZXNzaW9uSUQ7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378784</attachid>
            <date>2019-09-13 21:18:36 -0700</date>
            <delta_ts>2019-09-13 21:35:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201789-20190913211812.patch</filename>
            <type>text/plain</type>
            <size>106141</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmU3ZDgzYTBiYTM3M2U0
YjcyNWNjMTNmYTE0YjIxOThiMmE5NjUuLjE3ZjQ0NmY3MTM2NDAyN2I2NzYwZTI5ZDllYzlmZThk
ZjU0ZWMwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEzIEBACisyMDE5LTA5LTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRo
ZSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vz
c2lvbiBwZXIgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAxNzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRoZSBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgQXMgYSByZXN1bHQsIHdlIG5vIGxvbmdlciBuZWVkIHRvIHBhc3MgdGhlIHNlc3Npb25J
RCBpbiBlYWNoIElQQyBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZQorICAgICAgICBOZXR3b3Jr
UHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRD
aGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRy
YWNraW5nUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vzc2lvbklEIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0
YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1
bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpibG9iU2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0Ns
aWVudENvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJv
bVBhcmVudDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsQ2hhbmdlRG9jdW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25X
aXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpzZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmRlbGV0ZUNvb2tpZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnNlc3Npb25JRCBjb25zdCk6CisKIDIwMTktMDktMTEgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIEFSIFF1aWNrTG9v
ayB0byB0cmlnZ2VyIHByb2Nlc3NpbmcgaW4gdGhlIG9yaWdpbmF0aW5nIHBhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjBjMmVmNzc4MWZmODAzMjcyMzljOThjZjVjYzRiMDli
OGZmYWZkZC4uODYzN2QyZjRiNmFhZDRlYzBhNTYxNDI3MGYxM2RlYjI5ZDUyMGQxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc2LDE0ICs3NiwxNSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK1JlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIGNv
bm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MobmV0d29ya1Byb2Nlc3MsIHdlYlByb2Nlc3NJZGVudGlmaWVy
LCBzZXNzaW9uSUQsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKLU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCitOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiAg
ICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgICwgbV9tZG5zUmVnaXN0ZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTExMyw3ICsx
MTQsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CisgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwogI2VuZGlmCiB9CiAKQEAgLTIwNCwxNyArMjA1LDE2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3dlYklE
QkNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV93ZWJJREJDb25uZWN0aW9ucy5lbmQoKSkKLSAgICAgICAgICAgIGl0ZXJh
dG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIGlmIChtX3dlYklEQkNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3dlYklEQkNvbm5lY3Rp
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgaWYgKG1fc3dDb25uZWN0
aW9uKQorICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTI2OSw4ICsyNjksOCBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOworICAgICAgICBpZiAo
bV9zd0Nvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtMzE0LDEzICszMTQsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBhdXRvIGlkYkNvbm5lY3Rp
b25zID0gc3RkOjpleGNoYW5nZShtX3dlYklEQkNvbm5lY3Rpb25zLCB7IH0pOwotICAgIGZvciAo
YXV0byYgY29ubmVjdGlvbiA6IGlkYkNvbm5lY3Rpb25zLnZhbHVlcygpKQotICAgICAgICBjb25u
ZWN0aW9uLT5kaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOworICAgIGlmIChhdXRvIGlkYkNv
bm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCQ29ubmVjdGlvbiwgeyB9KSkKKyAgICAg
ICAgaWRiQ29ubmVjdGlvbi0+ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1bnJlZ2lzdGVyU1dDb25uZWN0
aW9ucygpOworICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCkBAIC0zMzIsMjAgKzMzMSwyMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSQogewogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiB1cmwsIFN0
cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
IW1fbmV0d29ya1NvY2tldFN0cmVhbXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIFdlYkNv
cmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiB0b2tlbiA9IHsgfTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+c291cmNlQXBwbGljYXRp
b25BdWRpdERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5zZXQo
aWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCksIFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmll
ciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0
cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdv
cmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHVybCksIG1fc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlv
biwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtTb2NrZXRDaGFubmVscy5jb250YWlucyhpZGVu
dGlmaWVyKSk7Ci0gICAgaWYgKGF1dG8gY2hhbm5lbCA9IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpj
cmVhdGUoKnRoaXMsIHNlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQor
ICAgIGlmIChhdXRvIGNoYW5uZWwgPSBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKCp0aGlz
LCBtX3Nlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQogICAgICAgICBt
X25ldHdvcmtTb2NrZXRDaGFubmVscy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjaGFubmVsKSk7
CiB9CiAKQEAgLTM3NCw5ICszNzMsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZW5kU3VzcGVuc2lvbigpCiAjZW5kaWYKIH0KIAorTmV0d29ya1Nlc3Npb24qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpuZXR3b3JrU2Vzc2lvbigpCit7CisgICAgcmV0dXJu
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24obV9zZXNzaW9uSUQpOworfQorCiBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApAQCAtNDkwLDMxICs0OTQsMzEgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVj
b25uZWN0aW8KICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGlkRmluaXNoUHJlY29ubmVjdGlvbihwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpLCAwKTsKIH0KIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oY29uc3QgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbigpCiB7Ci0gICAgaWYgKHNlc3Npb25JRCAhPSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgaWYgKG1fc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Mo
KS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCkpCiAgICAgICAgICAgICByZXR1cm4gKnN0b3Jh
Z2VTZXNzaW9uOwogCiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dz
aW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3
b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgogICAgICAgICAvLyBG
SVhNRTogRmluZCBhIHdheSB0byB0cmFjayBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb25zIG1vcmUg
cmlnb3JvdXNseS4KICAgICAgICAgTE9HX0VSUk9SKCJOb24tZGVmYXVsdCBzdG9yYWdlIHNlc3Np
b24gd2FzIHJlcXVlc3RlZCwgYnV0IHRoZXJlIHdhcyBubyBzZXNzaW9uIGZvciBpdC4gUGxlYXNl
IGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0IGRpc2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGlu
IHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3RlZCByYWNlLiIpOwogICAgIH0KLSAgICByZXR1cm4g
bmV0d29ya1Byb2Nlc3MuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgcmV0dXJuIG5ldHdv
cmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewot
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vz
c2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8v
IEluIGNhc2UgYSByZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBzZXJ2aWNlIHdvcmtlciwgd2UgZG8g
bm90IGhhdmUgeWV0IHRoZSBhYmlsaXR5IHRvIGNvbnZlcnQgdGhlIGxvYWQuCiAgICAgaWYgKCFt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpIHsKLSAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2Fk
SUQsIHJlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIo
KS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTI3LDEyICs1MzEsMTIgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2kKICAgICBsb2FkZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVl
c3QsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CisgICAgYXV0byYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBhdXRvIHJlc3Vs
dCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
KSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkK
ICAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24o
KnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24s
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBw
YWdlSUQsIFdURjo6bnVsbG9wdCk7CiAgICAgfQpAQCAtNTQwLDEwNCArNTQ0LDEwNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKIHsKLSAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCiAgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyksIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKICAg
ICB9CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZXNFbmFibGVkKCkpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKCkuY29va2llc0VuYWJsZWQoKSk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lv
bihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKCkuY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IHJlc3VsdDsKLSAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBz
ZXNzaW9uSUQpLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKKyAgICBzdG9yYWdlU2Vzc2lvbigpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsK
KyAgICBzdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIHNlc3Npb24t
PmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5cGUpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJs
b2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lv
bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNV
UkwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxG
cm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
ZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoLCBudWxscHRyKSwgY29udGVu
dFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5k
KQogewotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CiAgICAg
aWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlm
ICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uID8gc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
YmxvYlNpemUodXJsKSA6IDApOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKQEAgLTY2NywyMSArNjcxLDIxIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShmcmFtZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7Ci0gICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3Rv
cmFnZVNlc3Npb24obV9zZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Y2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdlSUQpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewog
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBbXSB7IH0pOwogICAgIH0KQEAgLTY5
Nyw5ICs3MDEsOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYQogICAgIH0KIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzA5LDkgKzcxMyw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHBy
b21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nl
c3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpIHsKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9y
YWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgd2ViUGFn
ZUlELCB3ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzIxLDkgKzcyNSw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
OlllcywgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVy
UGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5y
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzKSwgb3BlbmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikpOwogICAgIH0K
QEAgLTc0NSw5ICs3NDksOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJj
ZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291
cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9u
SUQpCitPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJj
ZSkKIHsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgaWYgKG1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAv
LyBFaXRoZXIgZ2V0IHRoZSBleGlzdGluZyByb290IGFjdGl2aXR5IHRyYWNrZXIgZm9yIHRoaXMg
cGFnZSBvciBjcmVhdGUgYQpAQCAtODQxLDM4ICs4NDUsMzUgQEAgc2l6ZV90IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNvdXJjZUxv
YWRJZGUKIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIgLSAlIiBQUkl1NjQsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKLSAgICBBU1NFUlQoIW1f
d2ViSURCQ29ubmVjdGlvbnMuY29udGFpbnMoc2Vzc2lvbklELnRvVUludDY0KCkpKTsKKyAgICBM
T0coSW5kZXhlZERCLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaElE
QkNvbm5lY3Rpb25Ub1NlcnZlciAtICUiIFBSSXU2NCwgbV9zZXNzaW9uSUQudG9VSW50NjQoKSk7
CisgICAgQVNTRVJUKCFtX3dlYklEQkNvbm5lY3Rpb24pOwogICAgIAotICAgIG1fd2ViSURCQ29u
bmVjdGlvbnMuYWRkKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCkpOworICAgIG1fd2ViSURCQ29ubmVjdGlvbiA9IFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3MsIG1fY29ubmVj
dGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciwgbV9zZXNzaW9uSUQpOwogfQogI2Vu
ZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCiB7Ci0gICAg
YXV0byBzd0Nvbm5lY3Rpb25zID0gV1RGTW92ZShtX3N3Q29ubmVjdGlvbnMpOwotICAgIGZvciAo
YXV0byYgc3dDb25uZWN0aW9uIDogc3dDb25uZWN0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc3dDb25uZWN0aW9uKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5zZXJ2ZXIoKS5yZW1v
dmVDb25uZWN0aW9uKHN3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgaWYg
KG1fc3dDb25uZWN0aW9uKQorICAgICAgICBtX3N3Q29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3Zl
Q29ubmVjdGlvbihtX3N3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiB7Ci0gICAgYXV0byYgc2VydmVyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0
byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29y
a1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3
U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwg
bV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLCBtX3Nlc3Npb25JRCk7
CiAKLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAg
ICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlc3Npb25JRCwgbWFrZVdlYWtQdHIoKmNvbm5lY3Rpb24p
KTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uKTsKKyAgICBtX3N3Q29ubmVjdGlvbiA9IG1h
a2VXZWFrUHRyKCpjb25uZWN0aW9uKTsKICAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3Zl
KGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZlciA9IG1f
bmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3RzKHNlc3Npb25JRCkpCisg
ICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lv
bklmRXhpc3RzKG1fc2Vzc2lvbklEKSkKICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0g
bWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nl
c3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0
KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWZiMGM5Y2QzNDE2
N2I2ZGNjYjBjOTE5ZWI2Y2RlMzQyODdmNWJmZS4uODgyNDFlM2RlZWIwZDM2MTgxMTI1ZTVmNTc4
MGNhM2I1YmIyZDgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtODQsOCArODQsMTEg
QEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHB1YmxpYzoKICAgICB1c2lu
ZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogCi0gICAg
c3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBOZXR3b3JrU2Vz
c2lvbiogbmV0d29ya1Nlc3Npb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KQEAgLTE0
MCw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmV0d29ya0xvYWRJbmZvcm1hdGlvbkJ5
SUQucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNv
dXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3Vy
Y2UpOwogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKQEAgLTE1Miw5ICsxNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6SGFzQWN0aXZpdHkpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRG
aW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwpAQCAtMTc2LDQwICsxODAsNDAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQg
cGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lID0geyB9KTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgIHZvaWQgY29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwot
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgZW5kKTsKLSAgICB2b2lkIGJsb2JTaXplKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7Ci0gICAgdm9pZCB3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKKyAg
ICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgdm9pZCBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0Vu
YWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIGdldFJhd0Nv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGlu
dDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIAotICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFt
KFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7
CisgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgdWludDY0X3QpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
dWludDY0X3QgaWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICAvLyBNZXNzYWdlcyBoYW5kbGVycyAoTW9kZXJuIElEQikuCi0gICAgdm9pZCBlc3RhYmxpc2hJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNo
SURCQ29ubmVjdGlvblRvU2VydmVyKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCk7Ci0gICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTV0Nv
bm5lY3Rpb25zKCk7CisgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKKyAg
ICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAog
ICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydDIpOwpAQCAtMjMxLDE0ICsyMzUsMTQgQEAgcHJpdmF0ZToKICAgICBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFy
UGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNzaW9uUmVzb3VyY2VMb2Fk
RGF0YSYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CisgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTI4MiwxMCArMjg2LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAogICAgIElQQzo6Q29ubmVj
dGlvbiogcGF5bWVudENvb3JkaW5hdG9yQ29ubmVjdGlvbihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIGZpbmFsOwogICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGlu
YXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFM
OjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9y
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZp
bmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5
cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyAgICBjb25zdCBT
dHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQ
YXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1l
c3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKICAgICB2b2lkIHBh
eW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CkBAIC0yOTMsNiAr
Mjk3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8TmV0
d29ya1NvY2tldFN0cmVhbT4+IG1fbmV0d29ya1NvY2tldFN0cmVhbXM7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPj4gbV9uZXR3b3Jr
U29ja2V0Q2hhbm5lbHM7CkBAIC0zMTUsMTEgKzMyMCwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Pj4gbV93ZWJJREJDb25uZWN0aW9uczsKKyAgICBS
ZWZQdHI8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX3dlYklEQkNvbm5lY3Rpb247CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAg
ICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRD
b25uZWN0aW9uOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGQxMzU0YTI1YzIwNzg4MDMyNzMyZDRkNjdlY2I0NTMwODRmMWJkOTYuLjky
MDViYmYxOWVjYjkwYjJlODg0ODQ2MDcxYzJkNzA4NzgxNjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzEsMzggKzMxLDQxIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQ
cmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAgICAgUHJlY29ubmVjdFRvKHVpbnQ2NF90IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQotICAgIENvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpCisgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0
ZWROYW1lKQorICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5nIGNvb2tpZVN0cmluZykKLSAg
ICBDb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGVuYWJs
ZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKSBTeW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgRGVsZXRlQ29va2llKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAg
Q29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNFbmFibGVk
KCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpi
b29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAt
PiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5j
aHJvbm91cworICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91
cworICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAotICAgIFJl
Z2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxl
LCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMs
IFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgVVJMIHNyY1VSTCkKLSAgICBSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmws
IFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQot
ICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
IHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKQotICAgIEJsb2JT
aXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3Vs
dFNpemUpIFN5bmNocm9ub3VzCi0gICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxT
dHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmws
IFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25I
YW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkK
KyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3Ry
aW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBl
bmQpCisgICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAgICBCbG9iU2l6ZShVUkwgdXJs
KSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKKyAgICBXcml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+
IGZpbGVOYW1lcykgQXN5bmMKIAogICAgIFNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCi0gICAgQ3JlYXRlU29ja2V0U3RyZWFtKFVSTCB1cmws
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRf
dCBpZGVudGlmaWVyKQotICAgIENyZWF0ZVNvY2tldENoYW5uZWwoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3RvY29s
LCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIENyZWF0ZVNvY2tldFN0cmVhbShVUkwgdXJsLCBT
dHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgQ3JlYXRlU29j
a2V0Q2hhbm5lbChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKTsKLSAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCisgICAgUmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOworICAgIENsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KTsKKyAgICBMb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQorICAgIAorICAgICMgRklYTUU6IFN0b3AgcGFzc2luZyBzZXNzaW9uSURzLgogICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9u
SUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+IHN0YXRpc3RpY3Mp
Ci0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2Vzcykg
QXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCi0gICAgUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBvcGVuZXJEb21haW4pCisKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BG
cmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4g
KGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBl
bnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKICNlbmRpZgogCiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
U3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBk
ZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtNzUs
MTIgKzc4LDEyIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBUYWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3ModWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyBuZXR3b3JrTWV0cmljcykgU3luY2hyb25vdXMKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotICAgIEVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKCkKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgRXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQorICAgIEVz
dGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQogI2VuZGlmCiAKICAgICBDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MSwgc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBwb3J0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTkxZjFiM2Y4MTNiZTZmMWQ0MDg4MmVjMjNhMjk0
ZjQ4MTNhYjNmYi4uM2ZmNmU5ZDM4NjVjODdhMDdhNGFiNDBiNTMzMDVjODIxNDEzNzk2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIsIElQQzo6QXR0YWNobWVudD4+CiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBpcGNDb25uZWN0aW9uID0gY3JlYXRlSVBDQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIG5ld0Nvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRl
KCp0aGlzLCBpZGVudGlmaWVyLCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CisgICAgYXV0byBuZXdD
b25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywg
aWRlbnRpZmllciwgc2Vzc2lvbklELCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CiAgICAgYXV0byYg
Y29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb24uZ2V0KCk7CiAKICAgICBBU1NFUlQoIW1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwZWRmMWQ1MGFjM2M5Y2U2MjY1
NTVlNTdhMzg5ZTg5OTgxMmNkNzdhLi5lYjk4NDJkMTdhZmNlMzUxNzk0ZTNhYTU0ZjFmNjM5MmJl
OGE5YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0zODgsNyArMzg4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJz
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYm
KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGEzZjdlYTMyNjRh
ZmYwMWQ4NmNkMDc5MmIxMTc1NTQzM2FlZjJkMDYuLjczOGQ3MGFmOWFmZDQwZWY4NjQ4YmU3ODA0
NjVlYmQ0OTU3NzY2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
IHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9u
IGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wg
aWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU4NGI3NjkwMGJjZDMxZjQxZjRlZDEy
MTQ1MmJlNzZmODQ4NWE1YjIuLmNkZTlmMjA1YTk1NThlZDg5ZGQ3MDc4ZGVmNGQzN2Q3NmRjOWMy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdS
ZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIHNlc3Npb25JRCgpKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNl
KCkpOwogCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAgIG1fd2FzU3RhcnRlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCmluZGV4IGM4Yjg2YzUx
MTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMuLjU4OWQ3ODMwYmQ4MTY0OThiZGUyNzZi
M2E3YTIxMmRhYmFmMGI3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9T
Lm1tCkBAIC01MiwzMCArNTIsMzAgQEAgVUlWaWV3Q29udHJvbGxlciAqTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWUKICAgICByZXR1
cm4gbmlsOwogfQogCi1jb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitjb25zdCBT
dHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JC
b3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25D
b2NvYSo+KG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5l
dHdvcmtTZXNzaW9uKCkpKQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Ym91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLWNvbnN0IFN0cmlu
ZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckNURGF0
YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK2NvbnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckNURGF0YUNvbm5lY3Rpb25TZXJ2aWNl
VHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCiB7Ci0gICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4obV9uZXR3b3JrUHJv
Y2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4obmV0d29ya1Nlc3Npb24oKSkpCiAg
ICAgICAgIHJldHVybiBzZXNzaW9uLT5jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKTsKICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotY29uc3QgU3RyaW5nJiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQorY29uc3QgU3RyaW5nJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKIHsKLSAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPihtX25ldHdvcmtQcm9jZXNz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0
YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPihuZXR3b3JrU2Vzc2lvbigpKSkKICAgICAg
ICAgcmV0dXJuIHNlc3Npb24tPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwog
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1jb25zdCBTdHJpbmcmIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCitjb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewotICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG1fbmV0d29y
a1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5ldHdvcmtTZXNzaW9uKCkp
KQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCk7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aAppbmRleCBmMzNjYWIzMDVmZWUxMjc0ZmFhN2IyMTgzOGU5YmI3ZWY3NmJiZjI3Li5kNmVjYTg5
YmQxN2E4NDBkZjM4ZGJkNTAzMjI1MTBmNzJmNzEzYWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgK
QEAgLTc4LDkgKzc4LDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRl
ZmF1bHQ7CiAKICAgICAgICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIHBheW1lbnRDb29yZGlu
YXRvckNvbm5lY3Rpb24oY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVy
ZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6OlNl
c3Npb25JRCkgPSAwOwotICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3Jk
aW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpID0gMDsKLSAgICAgICAgdmlydHVhbCBj
b25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lv
bklEKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0
b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0
b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50
Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXlt
ZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UmKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGM0ZjJmODBkNjgyZDUyMDA4NTZiODQ1
YmY2YmFiYmRjYzA2YWE4ZmIuLmQyYzY2MWFkOTE1OWM1MTVkN2NiZjAzZDU0ZWQzMjRjMzBkNTMx
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtNjYs
NyArNjYsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1h
a2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cgogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwogI2VuZGlmCiAKLSAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhN
ZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50
aWZpZXIsIGRvbWFpbk5hbWUsIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxp
Y2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigqdGhpcywgc2Vzc2lvbklEKSwgbWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNh
bk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgIFBLQ2FuTWFrZVBh
eW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKG1l
cmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9y
U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCp0aGlzKSwgbWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNh
bk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJy
b3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50
SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsKIApAQCAtMjc4LDE3ICsyNzgs
MTcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGMKIAogI2lmIEhBVkUoUEFTU0tJVF9CT1VORF9J
TlRFUkZBQ0VfSURFTlRJRklFUikKICAgICAvLyBGSVhNRTogUmVtb3ZlIC1yZXNwb25kc1RvU2Vs
ZWN0b3I6IGNoZWNrIG9uY2UgcmRhcjovL3Byb2JsZW0vNDgwNDE1MTYgaXMgd2lkZWx5IGF2YWls
YWJsZSBpbiBTREtzLgotICAgIGF1dG8mIGJvdW5kSW50ZXJmYWNlSWRlbnRpZmllciA9IG1fY2xp
ZW50LnBheW1lbnRDb29yZGluYXRvckJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigqdGhpcywgc2Vz
c2lvbklEKTsKKyAgICBhdXRvJiBib3VuZEludGVyZmFjZUlkZW50aWZpZXIgPSBtX2NsaWVudC5w
YXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoKnRoaXMpOwogICAgIGlm
ICghYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyLmlzRW1wdHkoKSAmJiBbcmVzdWx0IHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOildKQogICAg
ICAgICBbcmVzdWx0IHNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjpib3VuZEludGVyZmFjZUlk
ZW50aWZpZXJdOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB1c2luZyByZXNw
b25kc1RvU2VsZWN0b3IsIHRoaXMgc2hvdWxkIHVzZSBhIHByb3BlciAjaWYgdmVyc2lvbiBjaGVj
ay4KLSAgICBhdXRvJiBidW5kbGVJZGVudGlmaWVyID0gbV9jbGllbnQucGF5bWVudENvb3JkaW5h
dG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCp0aGlzLCBzZXNzaW9uSUQpOwor
ICAgIGF1dG8mIGJ1bmRsZUlkZW50aWZpZXIgPSBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKnRoaXMpOwogICAgIGlmICghYnVuZGxl
SWRlbnRpZmllci5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjopXSkKICAgICAgICAgW3Jl
c3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6YnVuZGxlSWRlbnRpZmll
cl07CiAKLSAgICBhdXRvJiBzZWNvbmRhcnlJZGVudGlmaWVyID0gbV9jbGllbnQucGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCp0aGlzLCBzZXNz
aW9uSUQpOworICAgIGF1dG8mIHNlY29uZGFyeUlkZW50aWZpZXIgPSBtX2NsaWVudC5wYXltZW50
Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKnRoaXMpOwog
ICAgIGlmICghc2Vjb25kYXJ5SWRlbnRpZmllci5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRp
ZmllcjopXSkKICAgICAgICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXI6c2Vjb25kYXJ5SWRlbnRpZmllcl07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMmEyOGIxNTkyOGQ2OGU3
NGJiOTVkMDZmOWVjMTY1ZTI3YzJlMjU1Ny4uNzNjZmQxYmViMTUyMTQxMGFlODZlMDlmNTBmZTMy
N2E0NDQxNTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0KQEAgLTIyOCwyMSArMjI4LDE4IEBAIElQQzo6Q29ubmVjdGlvbiog
V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKGNvbnN0IFdlYlBheW1l
bnRDb29yCiAgICAgcmV0dXJuIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCk7CiB9CiAKLWNvbnN0
IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlk
ZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCitjb25zdCBTdHJpbmcmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5h
dG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IHdlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSk7CiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmUo
KS5ib3VuZEludGVyZmFjZUlkZW50aWZpZXIoKTsKIH0KIAotY29uc3QgU3RyaW5nJiBXZWJQYWdl
UHJveHk6OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKK2NvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JTb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmKQogewotICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gd2Vi
c2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9y
ZSgpLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwogfQogCi1jb25zdCBTdHJp
bmcmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQorY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6OnBheW1lbnRD
b29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSYpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQs
IHNlc3Npb25JRCA9PSB3ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOwogICAgIHJldHVy
biB3ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDUxYjNlOTA4MDY2ZTVmOGM0MWVkODAxZjYxYWU5
YjEwMTdkZjQ4NWMuLjg1MWI1ODA4M2RmODI5YmI5Y2YwNzljOTU3NmYxMjdkNDM1MTIwZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vz
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6b3Blbk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bih1aW50NjRfdCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXIsIFdlYlByb2Nlc3NQcm94eSYg
d2ViUHJvY2Vzc1Byb3h5KQogewotICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkgfSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFr
UHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYm
IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9uKCktPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmll
cigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQ
cm94eSksIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVu
dGlmaWVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmZDk5ZmMz
ZGQwOGQwZTM2ZjgzYzM5Mzc0M2I0MzQyNzlkYWJmMDU3Li4yMTRhMDBkMTdlMDA3Y2JlZTViMDVk
NTFjMjgzZDdlNGNkZDhiMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMjA5NCw5ICsyMDk0LDkgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6Q2xpZW50CiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBJUEM6OkNvbm5l
Y3Rpb24qIHBheW1lbnRDb29yZGluYXRvckNvbm5lY3Rpb24oY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKSBmaW5hbDsKLSAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRv
ckJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSYsIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKLSAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29y
ZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKLSAgICBjb25zdCBTdHJp
bmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lvbklEKSBmaW5h
bDsKKyAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvckJvdW5kSW50ZXJmYWNlSWRl
bnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNv
bnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAgY29u
c3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICB2
b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVm
ZXJlbmNlJikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IGQzYzgyZjA0Njg0OGM4Y2QwNTliYzI1NjliZjRjYTI5M2E0ZmYx
NGEuLjVkNjNkNDUzODEzNzUzNTViNjU5NDJhYjM2MTVmMjYwMDg1YzhmYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ3Niw2ICsxNDc2LDEy
IEBAIFdlYlByb2Nlc3NQb29sJiBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NQb29sKCkgY29uc3QK
ICAgICByZXR1cm4gKm1fcHJvY2Vzc1Bvb2wuZ2V0KCk7CiB9CiAKK1BBTDo6U2Vzc2lvbklEIFdl
YlByb2Nlc3NQcm94eTo6c2Vzc2lvbklEKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV93ZWJzaXRl
RGF0YVN0b3JlKTsKKyAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsK
K30KKwogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0YWtl
QmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1ZDQzNWJmM2U4ZDBjNmYxMTQ5OTQ5
MjEwYTQzMmViYmEyZTZmMjdiLi4yN2Y2YjM2MThmMzlhNDAyMDExODA0MGVmN2ZlNzYyMDQzOTBi
YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTMx
LDYgKzEzMSw4IEBAIHB1YmxpYzoKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRh
U3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vi
c2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0
YVN0b3JlJik7CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAK
ICAgICBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9ySWRlbnRpZmllcihXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDZjMmYxM2QwNjYwNTU3NmIzYWE4YjU0OTNhZWY5NzUzMThm
Y2QzOTQuLjk3MzNhNjMwZjI3ZTFjMjA0MzU2Njg5YWYwNzI1MGQ5YmUxYmUyN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFi
YXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNjIsNyArNjIs
NyBAQCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAg
ICAgLCBtX2Nvbm5lY3Rpb25Ub1NlcnZlcihJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Y3JlYXRlKCp0aGlzKSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKHNlc3Npb25JRCks
IDApOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpF
c3RhYmxpc2hJREJDb25uZWN0aW9uVG9TZXJ2ZXIoKSwgMCk7CiB9CiAKIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6fldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXgg
NzgxMTIwNzc4NGFmNjBhMmFkZWM1NmNhYTU4NjRhNzFiM2FkMTIzYy4uNjZmNDQyYzI5Zjk5NzQx
ZTRlMTY1Y2RkYTkxMjhiOGY2OTVlMTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcApAQCAtMzYsNyArMzYsNyBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdp
c3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGU7CiAKQEAgLTQ0LDM5
ICs0NCwzOSBAQCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJgogICAgIGlmICghZmlsZS0+cGF0aCgp
LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUt
PnBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGV4dGVuc2lvbkhhbmRs
ZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGZpbGUtPnBh
dGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJG
aWxlQmxvYlVSTCh1cmwsIGZpbGUtPnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlw
ZSksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYm
IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5
UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZl
Y3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGJsb2JQYXJ0cywgY29udGVu
dFR5cGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JQYXJ0cywgY29udGVu
dFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3Jj
VVJMKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3Rl
ckJsb2JVUkxGcm9tVVJMIHsgc2Vzc2lvbklELCB1cmwsIHNyY1VSTCB9LCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
Z2lzdGVyQmxvYlVSTEZyb21VUkwgeyB1cmwsIHNyY1VSTCB9LCAwKTsKIH0KIAotdm9pZCBCbG9i
UmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJl
ZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmls
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoZmlsZSk7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3Jj
VVJMLCBmaWxlLT5wYXRoKCksIGNvbnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50
VHlwZSksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iUmVn
aXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwpLCAwKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlVucmVnaXN0ZXJCbG9iVVJMKHVybCksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgZW5kKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBs
b25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xp
Y2Uoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsKIH0KIAotdW5z
aWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQordW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdp
c3RyeVByb3h5OjpibG9iU2l6ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgdWludDY0X3QgcmVzdWx0U2l6ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplKHNlc3Npb25J
RCwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6
ZTo6UmVwbHkocmVzdWx0U2l6ZSksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6QmxvYlNpemUodXJsKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZTo6UmVwbHko
cmVzdWx0U2l6ZSksIDApKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gcmVzdWx0U2l6
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDg3ODAwNmVkOTUzMTIwMDQzY2E5
ZjA5M2VhYWRlYzcwNmMzNGIxOTQuLmUxOGYwYWU3OGYyZTYyNTdmZDgyNDY5OTUzZmUzMjQ1NjNl
YTlkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjEwLDkgKzIxMCw5IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpTCiB7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNlc3Np
b25JRCwgYmxvYlVSTHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNvdXJjZUVy
cm9yJiYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKQEAgLTI2MCw4ICsyNjAs
OCBAQCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXImIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2VzcwogV2ViU1dDbGllbnRDb25uZWN0aW9uJiBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlk
KCkpOwotICAgIHJldHVybiAqbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmVuc3VyZShzZXNzaW9u
SUQsIFtzZXNzaW9uSURdIHsKLSAgICAgICAgcmV0dXJuIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
Y3JlYXRlKHNlc3Npb25JRCk7CisgICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24u
ZW5zdXJlKHNlc3Npb25JRCwgW10geworICAgICAgICByZXR1cm4gV2ViU1dDbGllbnRDb25uZWN0
aW9uOjpjcmVhdGUoKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmgKaW5kZXggMmI0ZWExYTc5NGRhZTkzZTgzYjgxNDVhNTAxYjhjYTMzNDJh
ZGI5Ni4uZTg4NDlmZWMxN2JhMDY4MmViYmRhNGQzZGY4OTcxYjZkMWUxOTRiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEg
c2luZ2xlIGNvbm5lY3Rpb24uCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdl
YlNXQ2xpZW50Q29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbjsKICNlbmRpZgog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggM2U3OWY5YTdlMTRlNWExODIyZjZiNGU2ZDVlYzJiZDdkYjM2MjM2
ZC4uY2M3ZWM0MmVmMTViMWUzMTJiMjQ0Mzc4YzYzNjFkMGMxZTg2YTUzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTEwMyw3ICsxMDMsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3RhdHVzIFdlYlNv
Y2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgaWYgKHJlcXVl
c3QtPnVybCgpICE9IHVybCAmJiBtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZFVwZ3Jh
ZGVVUkwoKTsKIAotICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVsIHsgbV9kb2N1bWVudC0+c2Vz
c2lvbklEKCksICpyZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcigpIH0pOworICAgIE1lc3Nh
Z2VTZW5kZXI6OnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
cmVhdGVTb2NrZXRDaGFubmVsIHsgKnJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKCkgfSk7
CiAgICAgcmV0dXJuIENvbm5lY3RTdGF0dXM6Ok9LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCAxZmI2OTYx
ZmZmMGJhZDYzMWRlMTA5MmMwNGNmMjY4ZTJjMjc4YzRjLi4zY2E5MDA0MmI3NTI3OWJmMzkxYmM1
MzJhZDE5MWIyNmJlYTYzODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTgyLDExICs4MiwxMSBAQCBSZWY8V2Vi
U29ja2V0U3RyZWFtPiBXZWJTb2NrZXRTdHJlYW06OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29j
a2V0U3RyZWFtSGFuZGxlQwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldFN0cmVh
bSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uKSk7CiB9CiAKLVdl
YlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQorV2ViU29ja2V0U3RyZWFtOjpXZWJTb2Nr
ZXRTdHJlYW0oY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikK
ICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkKICAgICAsIG1fY2xpZW50KGNs
aWVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVNvY2tldFN0cmVhbSh1cmwsIHNlc3Npb25JRCwgY2FjaGVQ
YXJ0aXRpb24sIGlkZW50aWZpZXIoKSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlU29ja2V0U3RyZWFtKHVy
bCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIoKSksIDApOwogCiAgICAgTG9ja0hvbGRlciBs
b2NrZXIoZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jayk7CiAgICAgQVNTRVJUKCFnbG9iYWxX
ZWJTb2NrZXRTdHJlYW1NYXAoKS5jb250YWlucyhpZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uY3BwCmluZGV4IGE4YWE2Nzk2MjI5MmFhOGEyM2NmYTY2OGI5ZjY3ZjVkMzQ3NDc3MDkuLjA2
YTRjYzdkYjdhMThjMTE4N2JhZmM2NTg4NTU0MzJjNDVlYjJhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcApAQCAtNTUsMTMgKzU1LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogCi1XZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29u
bmVjdGlvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklE
KQotICAgICwgbV9pZGVudGlmaWVyKFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKK1dlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6V2ViU1dDbGllbnRDb25uZWN0aW9uKCkKKyAgICA6IG1faWRlbnRpZmllcihQ
cm9jZXNzOjppZGVudGlmaWVyKCkpCiAgICAgLCBtX3N3T3JpZ2luVGFibGUobWFrZVVuaXF1ZVJl
ZjxXZWJTV09yaWdpblRhYmxlPigpKQogewotICAgIEFTU0VSVChtX3Nlc3Npb25JRC5pc1ZhbGlk
KCkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpF
c3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbiB7IH0pOwogfQogCiBXZWJTV0NsaWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENv
bm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCBlZmVmMzZiY2FjZDI4NTQ1N2JlMDE0Zjhk
NGNiYzlkYTY5OWMyZjhiLi4yN2ZlYTJjMWIyNGI4YzJhOTY0YzRlOTY3ZDNmN2VjYTM4ZDAzNzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIlNoYXJlZE1l
bW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgotI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQ5LDcgKzQ4LDcgQEAgY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOwogCiBj
bGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDbGll
bnRDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNXQ2xpZW50Q29ubmVj
dGlvbj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJTV0NsaWVudENvbm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7IH0KKyAgICBzdGF0aWMg
UmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJTV0NsaWVudENvbm5lY3Rpb24pOyB9CiAgICAgfldlYlNXQ2xpZW50Q29ubmVjdGlvbigp
OwogCiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQpA
QCAtNjksMTAgKzY4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2Vy
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0KIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgV2ViU1dDbGllbnRDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEKTsK
KyAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNl
cnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwogICAgIHZv
aWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKQEAgLTk4LDE0ICs5NSwxMyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spOwog
CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZp
bmFsOwotICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9zZXNzaW9uSUQudG9VSW50NjQoKTsgfQorICAgIHVpbnQ2NF90IG1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogCiAgICAg
dm9pZCBzZXRTV09yaWdpblRhYmxlU2hhcmVkTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJik7CiAgICAgdm9pZCBzZXRTV09yaWdpblRhYmxlSXNJbXBvcnRlZCgpOwogCiAgICAgdm9p
ZCBjbGVhcigpOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICBVbmlx
dWVSZWY8V2ViU1dPcmlnaW5UYWJsZT4gbV9zd09yaWdpblRhYmxlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGU4OWQwYjM3ZGU4OTEyMGU2NDNiNDczMTc0MWQyOGEx
MTYzODZhOWQuLmU2MzNjNzdjNzFmMGIwZWY3NTQ5NWQxMDQyNjYyMmQ5OTNkMjM2ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24o
UmVmPElQQzo6Q29ubmVjdGlvbgogI2VuZGlmCiB7CiAgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9y
ZShzdG9yZSk7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5l
Y3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CisgICAgbV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxl
RG9tYWluIH0sIDApOwogfQogCiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggODMwZTVjODE1ZmE0ODRlM2M3ZjEyN2NjMmU0ZWUzMTFjNDk0ZDEw
My4uYzU0ZjdkZjkxZjJkNWY0NWUwZTA3ZjA5MWVjMWIwOWE1YzU5MWU0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50MigpCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBpZiAobV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50
aWZpZXIpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoCi0gICAgICAg
ICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+c2Vzc2lvbklELCBt
X2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9mcmFtZVNw
ZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDApOworICAgICAgICAgICAg
bV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPmZyYW1lSUQsIG1fZnJhbWVT
cGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5wYWdlSUQpLCAwKTsKICAgICAgICAgbV9m
cmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CiAgICAg
fQogI2VuZGlmCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgVVJMJiBjdXJyZW50VXJsLCBjb24KIAog
ICAgIGlmIChtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciAmJiAhV2ViQ29y
ZTo6YXJlUmVnaXN0cmFibGVEb21haW5zRXF1YWwoY3VycmVudFVybCwgbmV3VXJsKSkgewogICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSgKLSAgICAgICAgICAgIG1fZnJhbWVT
cGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5zZXNzaW9uSUQsIG1fZnJhbWVTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5mcmFtZUlELCBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzSWRlbnRpZmllci0+cGFnZUlEKSwgMCk7CisgICAgICAgICAgICBtX2ZyYW1lU3BlY2lm
aWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9mcmFtZVNwZWNpZmljU3RvcmFn
ZUFjY2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDApOwogICAgICAgICBtX2ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzSWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKICAgICB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDVmYjNjZjIwOWEzZTZjMWJl
MzkwZGJmOGVhZDkwNDNmZTQzYTE0NDUuLmUxYjRiOWViM2YzODRmNWY1ZmYyOTEzMWE5M2M4ZmQ2
ZGYwYzA2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNTks
MTQgKzU5LDE0IEBAIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcigpCiB7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmll
ciBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KQogewogICAgIGF1dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7CiAgICAgUmVn
aXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07CiAgICAgaWYgKGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyAhPSBvcGVuZXJEb21haW4KICAgICAgICAgJiYgIW9wZW5l
ckRvY3VtZW50Lmhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlcklu
dGVyYWN0aW9uKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcykKICAgICAgICAgJiYgIWVxdWFs
SWdub3JpbmdBU0NJSUNhc2Uob3BlbmVyVXJsLnN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpKSB7
Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihzZXNzaW9uSUQsIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAw
KTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMg
c2luY2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJEb2N1
bWVudC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRl
cmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwpAQCAtMzY0LDcgKzM2NCw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1
Y2VkVGltZVJlc29sdXRpb24oY29uc3QKIAogICAgIC8vIFdlIG5vdGlmeSByaWdodCBhd2F5IGlu
IGNhc2Ugb2YgYSB1c2VyIGludGVyYWN0aW9uIGluc3RlYWQgb2Ygd2FpdGluZyB0aGUgdXN1YWwg
NSBzZWNvbmRzIGJlY2F1c2Ugd2Ugd2FudAogICAgIC8vIHRvIHVwZGF0ZSBjb29raWUgYmxvY2tp
bmcgc3RhdGUgYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkxvZ1VzZXJJbnRlcmFjdGlv
bihkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9wRnJhbWVEb21haW4pLCAwKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkxvZ1Vz
ZXJJbnRlcmFjdGlvbih0b3BGcmFtZURvbWFpbiksIDApOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgaWYgKG1fc2hvdWxkTG9nVXNlckludGVyYWN0aW9uKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAppbmRleCBmNmM1
NTdkNWYwZmQyMDFkYmI1MDUxMTQ3ZWJjMjcwYTViNDVjZjNjLi4zYWI3OGU1MzlkN2VlZDliYzVj
MjhhZjNlY2JjZWY1MGYwN2Y3YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU3RyaW5nIFdlYkNv
b2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYg
dXJsKSBjb25zdAogCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1
bWVudC5zZXNzaW9uSUQoKSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNp
dGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1
cmVDb29raWVzKGRvY3VtZW50LCB1cmwpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCkpLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJl
cGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKICAgICByZXR1cm4gY29va2llU3RyaW5nOwpAQCAtNzQsMjIgKzc0LDIyIEBA
IHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKS5wYWdlSUQoKTsKICAgICB9CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRv
Y3VtZW50LnNlc3Npb25JRCgpLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKSwg
MCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2ll
cygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2ll
U3RyaW5nKSwgMCk7CiB9CiAKIGJvb2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25z
dCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgYm9vbCByZXN1bHQg
PSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKGRvY3VtZW50LnNlc3Npb25J
RCgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5h
YmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZCgp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVk
OjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nl
c3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQ
QUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
Y29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4g
V2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNl
c3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFN0
cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxz
ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb25J
RCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJp
bmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9OwogICAg
IHJldHVybiB7IGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkID8gV2ViQ29yZTo6
U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNz
ZWQ6Ok5vIH07CiB9CkBAIC0xMDMsMTQgKzEwMywxNCBAQCBib29sIFdlYkNvb2tpZUphcjo6Z2V0
UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYg
dQogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CiAg
ICAgfQogCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKGRvY3VtZW50LnNlc3Npb25JRCgp
LCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQp
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2ll
cyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZv
aWQgV2ViQ29va2llSmFyOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6RGVsZXRlQ29va2llKGRvY3VtZW50LnNlc3Npb25JRCgpLCB1cmwsIGNvb2tpZU5hbWUpLCAw
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpLCAwKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKaW5kZXggNGNlMTAxMjhhYzQwYmNmZGFiNWJkN2QwZmU0YjE4NjRlYzkyN2IzYS4u
YjQ4NWM1NmI0MTE2YWYxYWVhNjYzODBiNzFiYTFkMTUyNDIzNzllNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMjgzLDkgKzI4Myw3IEBA
IHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpCiAgICAgYXV0byBwb2xpY3lEb3dubG9hZElEID0gbV9w
b2xpY3lEb3dubG9hZElEOwogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKIAotICAgIGF1
dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQgPSBwYWdlKCkgPyBwYWdlKCktPnNlc3Npb25JRCgpIDogUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKLSAgICB3ZWJQcm9jZXNzLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6U3RhcnREb3dubG9hZChzZXNzaW9uSUQsIHBvbGljeURvd25s
b2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQo
cG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2VzdGVkTmFtZSksIDApOwogfQogCiB2b2lk
IFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBA
IC0zMDcsNyArMzA1LDcgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwKICAgICBlbHNlCiAgICAg
ICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKIAotICAgIHdlYlByb2Nlc3MuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQoc2Vzc2lvbklELCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93
bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAwKTsKKyAgICB3ZWJQcm9jZXNzLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25s
b2FkKG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0
LCByZXNwb25zZSksIDApOwogfQogCiB2b2lkIFdlYkZyYW1lOjphZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlIG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgcmVxdWVzdElEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxY2RjMGI2OWU4YTQzMjNiYjNh
MGNlYjNlZWIyMDFlYjE1YjAyYmYzLi5hOTNhNTgwYzQzMzMwOGY1N2YxYzc2YTM0ZWEzMjNkYmMx
NTNmNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTMzOCw3ICsxMzM4LDcgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAgICAgICAgIHJl
dHVybjsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVh
clBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCgpLCBt
X2lkZW50aWZpZXIpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MobV9pZGVudGlmaWVyKSwgMCk7CiAjZW5kaWYKIAogICAgIG1faXNDbG9z
ZWQgPSB0cnVlOwpAQCAtNjUzNSwxMiArNjUzNSwxMiBAQCB2b2lkIFdlYlBhZ2U6OmZyYW1lQmVj
YW1lUmVtb3RlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBHbG9iYWxGcmFtZUlkZW50aWZpZXIm
JgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiB2b2lkIFdlYlBhZ2U6Omhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0
cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJhbWUmIGZyYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpIYXNTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCgpLCBXVEZNb3ZlKHN1YkZyYW1lRG9t
YWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lLmZyYW1lSUQoKSwgbV9pZGVudGlm
aWVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpI
YXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluKSwgZnJhbWUuZnJhbWVJRCgpLCBtX2lkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVn
aXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BG
cmFtZURvbWFpbiwgV2ViRnJhbWUmIGZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQoKSwgV1RGTW92ZShzdWJGcmFtZURvbWFpbiks
IFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZS5mcmFtZUlEKCksIG1faWRlbnRpZmllciwg
bV93ZWJQYWdlUHJveHlJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNlc3Npb25JRCA9IHNl
c3Npb25JRCgpLCBwYWdlSUQgPSBtX2lkZW50aWZpZXIsIGZyYW1lSUQgPSBmcmFtZS5mcmFtZUlE
KCldKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgbXV0YWJsZSB7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBX
VEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWUuZnJhbWVJRCgpLCBtX2lkZW50aWZpZXIsIG1f
d2ViUGFnZVByb3h5SWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZXNzaW9uSUQgPSBzZXNz
aW9uSUQoKSwgcGFnZUlEID0gbV9pZGVudGlmaWVyLCBmcmFtZUlEID0gZnJhbWUuZnJhbWVJRCgp
XShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIG11dGFibGUgewogICAgICAgICBpZiAo
d2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKQogICAgICAgICAgICAg
ZnJhbWUtPmZyYW1lTG9hZGVyQ2xpZW50KCktPnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzKHsgc2Vzc2lvbklELCBmcmFtZUlELCBwYWdlSUQgfSk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHdhc0dyYW50ZWQsIHByb21wdFdhc1Nob3duKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCA5YjM0ZWMwNDZmNWYxODkwY2U5NmNkMjA4NmRjNjdmM2Y0
ZjU3MWVmLi5hMGYwMTliNzJmNTU4MWUzOTY5YTA1NDBiYTYyN2I1ODFiZmUwM2UyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zOTEsOCArMzkxLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcocGFy
YW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKTsKIAotICAgIGVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpOwotCiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMu
dGVybWluYXRpb25UaW1lb3V0KTsKIAogICAgIHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKTsKQEAgLTQ2Miw2ICs0
NjAsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcAogICAgICAgICBzdXBwbGVtZW50LT5zZXRX
ZWJzaXRlRGF0YVN0b3JlKHBhcmFtZXRlcnMpOwogCiAgICAgcGxhdGZvcm1TZXRXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAKKyAgICBlbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzOjpoYXNQYWdl
UmVxdWlyaW5nUGFnZUNhY2hlV2hpbGVTdXNwZW5kZWQoKSBjb25zdApAQCAtNjUxLDYgKzY1MSw4
IEBAIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OndlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBj
b25zdAogCiB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKKyAgICBBU1NF
UlQocGFyYW1ldGVycy5zZXNzaW9uSUQgPT0gc2Vzc2lvbklEKCkpOworCiAgICAgLy8gSXQgaXMg
bmVjZXNzYXJ5IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBh
IHdpbmRvdy5vcGVuKCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0
cyBjcmVhdGVkIGJvdGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2ggdGhl
IG5vcm1hbCB3YXkuIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51
bGxwdHIpOwpAQCAtNjY5LDYgKzY3MSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFn
ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmCiAKIHZv
aWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKKyAgICBBU1NFUlQoc2Vzc2lvbklEID09IHRoaXMtPnNl
c3Npb25JRCgpKTsKICAgICBBU1NFUlQobV9wYWdlTWFwLmNvbnRhaW5zKHBhZ2VJRCkpOwogCiAg
ICAgcGFnZVdpbGxMZWF2ZVdpbmRvdyhwYWdlSUQpOwpAQCAtMTE5MCw2ICsxMTkzLDcgQEAgc3Rh
dGljIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oSVBDOjpDb25uZWN0aW9uJgogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9jZXNz
OjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQobV9zZXNzaW9uSUQpOwogCiAgICAgLy8g
SWYgd2UndmUgbG9zdCBvdXIgY29ubmVjdGlvbiB0byB0aGUgbmV0d29yayBwcm9jZXNzIChlLmcu
IGl0IGNyYXNoZWQpIHRyeSB0byByZS1lc3RhYmxpc2ggaXQuCiAgICAgaWYgKCFtX25ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggMjkyOGMxMDk1NGI3ZmNjYmY5MjA1OTZhMjM2OTY3NWE2ODVmN2Q0NS4uMDRmM2JlZWY3ZGM0
MjNlYjc0ZTA1MzFkNWZmMDIzYjExODU0NjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC0xNjIsOSArMTYyLDcgQEAgcHVibGljOgogCiAgICAgSW5qZWN0ZWRCdW5k
bGUqIGluamVjdGVkQnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQo
KTsgfQogICAgIAotICAgIC8vIFByZXdhcm1lZCBXZWJQcm9jZXNzZXMgZG8gbm90IGhhdmUgYW4g
YXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3aHkgdGhpcyBpcyBhbiBvcHRpb25h
bC4KLSAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2VzcyBnZXRzIGEgV2ViUGFnZSwgaXQg
aXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgotICAgIGNvbnN0IE9wdGlvbmFsPFBB
TDo6U2Vzc2lvbklEPiYgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0K
KyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IEFTU0VSVChtX3Nlc3Npb25J
RCk7IHJldHVybiAqbV9zZXNzaW9uSUQ7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNv
bnN0IFdURjo6TWFjaFNlbmRSaWdodCYgY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCkgY29u
c3QgeyByZXR1cm4gbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7IH0KQEAgLTU3NCw2ICs1
NzIsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBIYXNoTWFwPFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciwgU3RvcmFnZUFyZWFNYXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsKKyAgICAKKyAgICAvLyBQ
cmV3YXJtZWQgV2ViUHJvY2Vzc2VzIGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lvbklE
IHlldCwgd2hpY2ggaXMgd2h5IHRoaXMgaXMgYW4gb3B0aW9uYWwuCisgICAgLy8gQnkgdGhlIHRp
bWUgdGhlIFdlYlByb2Nlc3MgZ2V0cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8gaGF2
ZSBhIHNlc3Npb25JRC4KICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSUQ7
CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378785</attachid>
            <date>2019-09-13 21:35:34 -0700</date>
            <delta_ts>2019-09-16 01:01:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201789-20190913213510.patch</filename>
            <type>text/plain</type>
            <size>108554</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmU3ZDgzYTBiYTM3M2U0
YjcyNWNjMTNmYTE0YjIxOThiMmE5NjUuLjE3ZjQ0NmY3MTM2NDAyN2I2NzYwZTI5ZDllYzlmZThk
ZjU0ZWMwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEzIEBACisyMDE5LTA5LTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRo
ZSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vz
c2lvbiBwZXIgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAxNzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbklEIG9uIHRoZSBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBub3cgdGhhdCB0aGVyZSBpcyBvbmUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgQXMgYSByZXN1bHQsIHdlIG5vIGxvbmdlciBuZWVkIHRvIHBhc3MgdGhlIHNlc3Npb25J
RCBpbiBlYWNoIElQQyBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZQorICAgICAgICBOZXR3b3Jr
UHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRD
aGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRy
YWNraW5nUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vzc2lvbklEIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0
YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1
bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpibG9iU2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0Ns
aWVudENvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJv
bVBhcmVudDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsQ2hhbmdlRG9jdW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25X
aXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpzZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmRlbGV0ZUNvb2tpZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnNlc3Npb25JRCBjb25zdCk6CisKIDIwMTktMDktMTEgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIEFSIFF1aWNrTG9v
ayB0byB0cmlnZ2VyIHByb2Nlc3NpbmcgaW4gdGhlIG9yaWdpbmF0aW5nIHBhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjBjMmVmNzc4MWZmODAzMjcyMzljOThjZjVjYzRiMDli
OGZmYWZkZC4uODYzN2QyZjRiNmFhZDRlYzBhNTYxNDI3MGYxM2RlYjI5ZDUyMGQxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc2LDE0ICs3NiwxNSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK1JlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIGNv
bm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MobmV0d29ya1Byb2Nlc3MsIHdlYlByb2Nlc3NJZGVudGlmaWVy
LCBzZXNzaW9uSUQsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKLU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCitOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiAg
ICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgICwgbV9tZG5zUmVnaXN0ZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTExMyw3ICsx
MTQsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CisgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwogI2VuZGlmCiB9CiAKQEAgLTIwNCwxNyArMjA1LDE2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3dlYklE
QkNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV93ZWJJREJDb25uZWN0aW9ucy5lbmQoKSkKLSAgICAgICAgICAgIGl0ZXJh
dG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIGlmIChtX3dlYklEQkNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3dlYklEQkNvbm5lY3Rp
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgaWYgKG1fc3dDb25uZWN0
aW9uKQorICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTI2OSw4ICsyNjksOCBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpIH0pKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOworICAgICAgICBpZiAo
bV9zd0Nvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtMzE0LDEzICszMTQsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBhdXRvIGlkYkNvbm5lY3Rp
b25zID0gc3RkOjpleGNoYW5nZShtX3dlYklEQkNvbm5lY3Rpb25zLCB7IH0pOwotICAgIGZvciAo
YXV0byYgY29ubmVjdGlvbiA6IGlkYkNvbm5lY3Rpb25zLnZhbHVlcygpKQotICAgICAgICBjb25u
ZWN0aW9uLT5kaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOworICAgIGlmIChhdXRvIGlkYkNv
bm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCQ29ubmVjdGlvbiwgeyB9KSkKKyAgICAg
ICAgaWRiQ29ubmVjdGlvbi0+ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1bnJlZ2lzdGVyU1dDb25uZWN0
aW9ucygpOworICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCkBAIC0zMzIsMjAgKzMzMSwyMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSQogewogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiB1cmwsIFN0
cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
IW1fbmV0d29ya1NvY2tldFN0cmVhbXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIFdlYkNv
cmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiB0b2tlbiA9IHsgfTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+c291cmNlQXBwbGljYXRp
b25BdWRpdERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5zZXQo
aWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCksIFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmll
ciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0
cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdv
cmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHVybCksIG1fc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlv
biwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtTb2NrZXRDaGFubmVscy5jb250YWlucyhpZGVu
dGlmaWVyKSk7Ci0gICAgaWYgKGF1dG8gY2hhbm5lbCA9IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpj
cmVhdGUoKnRoaXMsIHNlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQor
ICAgIGlmIChhdXRvIGNoYW5uZWwgPSBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKCp0aGlz
LCBtX3Nlc3Npb25JRCwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpKQogICAgICAgICBt
X25ldHdvcmtTb2NrZXRDaGFubmVscy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjaGFubmVsKSk7
CiB9CiAKQEAgLTM3NCw5ICszNzMsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZW5kU3VzcGVuc2lvbigpCiAjZW5kaWYKIH0KIAorTmV0d29ya1Nlc3Npb24qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpuZXR3b3JrU2Vzc2lvbigpCit7CisgICAgcmV0dXJu
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24obV9zZXNzaW9uSUQpOworfQorCiBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApAQCAtNDkwLDMxICs0OTQsMzEgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVj
b25uZWN0aW8KICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGlkRmluaXNoUHJlY29ubmVjdGlvbihwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpLCAwKTsKIH0KIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oY29uc3QgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzdG9yYWdlU2Vzc2lvbigpCiB7Ci0gICAgaWYgKHNlc3Npb25JRCAhPSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgaWYgKG1fc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Mo
KS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCkpCiAgICAgICAgICAgICByZXR1cm4gKnN0b3Jh
Z2VTZXNzaW9uOwogCiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgd2l0aCBwcml2YXRlIGJyb3dz
aW5nIG1vZGUgcmVxdWVzdGVkIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBOZXR3
b3JrUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9uLgogICAgICAgICAvLyBG
SVhNRTogRmluZCBhIHdheSB0byB0cmFjayBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb25zIG1vcmUg
cmlnb3JvdXNseS4KICAgICAgICAgTE9HX0VSUk9SKCJOb24tZGVmYXVsdCBzdG9yYWdlIHNlc3Np
b24gd2FzIHJlcXVlc3RlZCwgYnV0IHRoZXJlIHdhcyBubyBzZXNzaW9uIGZvciBpdC4gUGxlYXNl
IGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0IGRpc2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGlu
IHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3RlZCByYWNlLiIpOwogICAgIH0KLSAgICByZXR1cm4g
bmV0d29ya1Byb2Nlc3MuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgcmV0dXJuIG5ldHdv
cmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewot
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vz
c2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8v
IEluIGNhc2UgYSByZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBzZXJ2aWNlIHdvcmtlciwgd2UgZG8g
bm90IGhhdmUgeWV0IHRoZSBhYmlsaXR5IHRvIGNvbnZlcnQgdGhlIGxvYWQuCiAgICAgaWYgKCFt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpIHsKLSAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2Fk
SUQsIHJlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIo
KS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTI3LDEyICs1MzEsMTIgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBB
TDo6U2Vzc2kKICAgICBsb2FkZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVl
c3QsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CisgICAgYXV0byYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBhdXRvIHJlc3Vs
dCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
KSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkK
ICAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24o
KnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24s
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBw
YWdlSUQsIFdURjo6bnVsbG9wdCk7CiAgICAgfQpAQCAtNTQwLDEwNCArNTQ0LDEwNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKIHsKLSAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCiAgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyksIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKICAg
ICB9CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZXNFbmFibGVkKCkpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKCkuY29va2llc0VuYWJsZWQoKSk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lv
bihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKCkuY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IHJlc3VsdDsKLSAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBz
ZXNzaW9uSUQpLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKKyAgICBzdG9yYWdlU2Vzc2lvbigpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsK
KyAgICBzdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIHNlc3Npb24t
PmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5cGUpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJs
b2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lv
bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNV
UkwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxG
cm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
ZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoLCBudWxscHRyKSwgY29udGVu
dFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5k
KQogewotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CiAgICAg
aWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlm
ICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YmxvYlNpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uID8gc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
YmxvYlNpemUodXJsKSA6IDApOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbigpOwogICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKQEAgLTY2NywyMSArNjcxLDIxIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShmcmFtZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7Ci0gICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3Rv
cmFnZVNlc3Npb24obV9zZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Y2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdlSUQpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewog
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBbXSB7IH0pOwogICAgIH0KQEAgLTY5
Nyw5ICs3MDEsOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYQogICAgIH0KIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzA5LDkgKzcxMyw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHBy
b21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nl
c3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpIHsKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9y
YWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgd2ViUGFn
ZUlELCB3ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzIxLDkgKzcyNSw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
OlllcywgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVy
UGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5y
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzKSwgb3BlbmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikpOwogICAgIH0K
QEAgLTc0NSw5ICs3NDksOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJj
ZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291
cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9u
SUQpCitPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJj
ZSkKIHsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgaWYgKG1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAv
LyBFaXRoZXIgZ2V0IHRoZSBleGlzdGluZyByb290IGFjdGl2aXR5IHRyYWNrZXIgZm9yIHRoaXMg
cGFnZSBvciBjcmVhdGUgYQpAQCAtODQxLDM4ICs4NDUsMzUgQEAgc2l6ZV90IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNvdXJjZUxv
YWRJZGUKIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIgLSAlIiBQUkl1NjQsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKLSAgICBBU1NFUlQoIW1f
d2ViSURCQ29ubmVjdGlvbnMuY29udGFpbnMoc2Vzc2lvbklELnRvVUludDY0KCkpKTsKKyAgICBM
T0coSW5kZXhlZERCLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaElE
QkNvbm5lY3Rpb25Ub1NlcnZlciAtICUiIFBSSXU2NCwgbV9zZXNzaW9uSUQudG9VSW50NjQoKSk7
CisgICAgQVNTRVJUKCFtX3dlYklEQkNvbm5lY3Rpb24pOwogICAgIAotICAgIG1fd2ViSURCQ29u
bmVjdGlvbnMuYWRkKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCkpOworICAgIG1fd2ViSURCQ29ubmVjdGlvbiA9IFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3MsIG1fY29ubmVj
dGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciwgbV9zZXNzaW9uSUQpOwogfQogI2Vu
ZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCiB7Ci0gICAg
YXV0byBzd0Nvbm5lY3Rpb25zID0gV1RGTW92ZShtX3N3Q29ubmVjdGlvbnMpOwotICAgIGZvciAo
YXV0byYgc3dDb25uZWN0aW9uIDogc3dDb25uZWN0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc3dDb25uZWN0aW9uKQotICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5zZXJ2ZXIoKS5yZW1v
dmVDb25uZWN0aW9uKHN3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgaWYg
KG1fc3dDb25uZWN0aW9uKQorICAgICAgICBtX3N3Q29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3Zl
Q29ubmVjdGlvbihtX3N3Q29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiB7Ci0gICAgYXV0byYgc2VydmVyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0
byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29y
a1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLCBzZXNzaW9uSUQpOworICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3
U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwg
bV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLCBtX3Nlc3Npb25JRCk7
CiAKLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAg
ICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlc3Npb25JRCwgbWFrZVdlYWtQdHIoKmNvbm5lY3Rpb24p
KTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uKTsKKyAgICBtX3N3Q29ubmVjdGlvbiA9IG1h
a2VXZWFrUHRyKCpjb25uZWN0aW9uKTsKICAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3Zl
KGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZlciA9IG1f
bmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3RzKHNlc3Npb25JRCkpCisg
ICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lv
bklmRXhpc3RzKG1fc2Vzc2lvbklEKSkKICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0g
bWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nl
c3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0
KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWZiMGM5Y2QzNDE2
N2I2ZGNjYjBjOTE5ZWI2Y2RlMzQyODdmNWJmZS4uODgyNDFlM2RlZWIwZDM2MTgxMTI1ZTVmNTc4
MGNhM2I1YmIyZDgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtODQsOCArODQsMTEg
QEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHB1YmxpYzoKICAgICB1c2lu
ZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogCi0gICAg
c3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBOZXR3b3JrU2Vz
c2lvbiogbmV0d29ya1Nlc3Npb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KQEAgLTE0
MCw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmV0d29ya0xvYWRJbmZvcm1hdGlvbkJ5
SUQucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNv
dXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3Vy
Y2UpOwogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKQEAgLTE1Miw5ICsxNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6SGFzQWN0aXZpdHkpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRG
aW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwpAQCAtMTc2LDQwICsxODAsNDAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQg
cGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lID0geyB9KTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgIHZvaWQgY29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwot
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgZW5kKTsKLSAgICB2b2lkIGJsb2JTaXplKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7Ci0gICAgdm9pZCB3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKKyAg
ICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgdm9pZCBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0Vu
YWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIGdldFJhd0Nv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGlu
dDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIAotICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFt
KFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7
CisgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgdWludDY0X3QpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
dWludDY0X3QgaWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICAvLyBNZXNzYWdlcyBoYW5kbGVycyAoTW9kZXJuIElEQikuCi0gICAgdm9pZCBlc3RhYmxpc2hJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNo
SURCQ29ubmVjdGlvblRvU2VydmVyKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCk7Ci0gICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTV0Nv
bm5lY3Rpb25zKCk7CisgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKKyAg
ICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAog
ICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydDIpOwpAQCAtMjMxLDE0ICsyMzUsMTQgQEAgcHJpdmF0ZToKICAgICBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFy
UGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNzaW9uUmVzb3VyY2VMb2Fk
RGF0YSYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CisgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTI4MiwxMCArMjg2LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAogICAgIElQQzo6Q29ubmVj
dGlvbiogcGF5bWVudENvb3JkaW5hdG9yQ29ubmVjdGlvbihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIGZpbmFsOwogICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGlu
YXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFM
OjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9y
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwotICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZp
bmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5
cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyAgICBjb25zdCBT
dHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQ
YXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1l
c3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKICAgICB2b2lkIHBh
eW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CkBAIC0yOTMsNiAr
Mjk3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8TmV0
d29ya1NvY2tldFN0cmVhbT4+IG1fbmV0d29ya1NvY2tldFN0cmVhbXM7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPj4gbV9uZXR3b3Jr
U29ja2V0Q2hhbm5lbHM7CkBAIC0zMTUsMTEgKzMyMCwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Pj4gbV93ZWJJREJDb25uZWN0aW9uczsKKyAgICBS
ZWZQdHI8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX3dlYklEQkNvbm5lY3Rpb247CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAg
ICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRD
b25uZWN0aW9uOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGQxMzU0YTI1YzIwNzg4MDMyNzMyZDRkNjdlY2I0NTMwODRmMWJkOTYuLjky
MDViYmYxOWVjYjkwYjJlODg0ODQ2MDcxYzJkNzA4NzgxNjk5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzEsMzggKzMxLDQxIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQ
cmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAgICAgUHJlY29ubmVjdFRvKHVpbnQ2NF90IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQotICAgIENvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpCisgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0
ZWROYW1lKQorICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5nIGNvb2tpZVN0cmluZykKLSAg
ICBDb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGVuYWJs
ZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKSBTeW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgRGVsZXRlQ29va2llKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAg
Q29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNFbmFibGVk
KCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpi
b29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAt
PiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5j
aHJvbm91cworICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91
cworICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAotICAgIFJl
Z2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxl
LCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMs
IFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgVVJMIHNyY1VSTCkKLSAgICBSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmws
IFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQot
ICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
IHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKQotICAgIEJsb2JT
aXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3Vs
dFNpemUpIFN5bmNocm9ub3VzCi0gICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxT
dHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmws
IFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25I
YW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkK
KyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3Ry
aW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBl
bmQpCisgICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAgICBCbG9iU2l6ZShVUkwgdXJs
KSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKKyAgICBXcml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+
IGZpbGVOYW1lcykgQXN5bmMKIAogICAgIFNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCi0gICAgQ3JlYXRlU29ja2V0U3RyZWFtKFVSTCB1cmws
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRf
dCBpZGVudGlmaWVyKQotICAgIENyZWF0ZVNvY2tldENoYW5uZWwoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3RvY29s
LCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIENyZWF0ZVNvY2tldFN0cmVhbShVUkwgdXJsLCBT
dHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgQ3JlYXRlU29j
a2V0Q2hhbm5lbChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKTsKLSAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCisgICAgUmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOworICAgIENsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KTsKKyAgICBMb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQorICAgIAorICAgICMgRklYTUU6IFN0b3AgcGFzc2luZyBzZXNzaW9uSURzLgogICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9u
SUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+IHN0YXRpc3RpY3Mp
Ci0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2Vzcykg
QXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCi0gICAgUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBvcGVuZXJEb21haW4pCisKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BG
cmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4g
KGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBl
bnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKICNlbmRpZgogCiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
U3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBk
ZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtNzUs
MTIgKzc4LDEyIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBUYWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3ModWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyBuZXR3b3JrTWV0cmljcykgU3luY2hyb25vdXMKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotICAgIEVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKCkKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgRXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQorICAgIEVz
dGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQogI2VuZGlmCiAKICAgICBDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MSwgc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBwb3J0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTkxZjFiM2Y4MTNiZTZmMWQ0MDg4MmVjMjNhMjk0
ZjQ4MTNhYjNmYi4uM2ZmNmU5ZDM4NjVjODdhMDdhNGFiNDBiNTMzMDVjODIxNDEzNzk2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIsIElQQzo6QXR0YWNobWVudD4+CiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBpcGNDb25uZWN0aW9uID0gY3JlYXRlSVBDQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIG5ld0Nvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRl
KCp0aGlzLCBpZGVudGlmaWVyLCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CisgICAgYXV0byBuZXdD
b25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywg
aWRlbnRpZmllciwgc2Vzc2lvbklELCBpcGNDb25uZWN0aW9uLT5maXJzdCk7CiAgICAgYXV0byYg
Y29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb24uZ2V0KCk7CiAKICAgICBBU1NFUlQoIW1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwZWRmMWQ1MGFjM2M5Y2U2MjY1
NTVlNTdhMzg5ZTg5OTgxMmNkNzdhLi5lYjk4NDJkMTdhZmNlMzUxNzk0ZTNhYTU0ZjFmNjM5MmJl
OGE5YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0zODgsNyArMzg4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJz
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYm
KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGEzZjdlYTMyNjRh
ZmYwMWQ4NmNkMDc5MmIxMTc1NTQzM2FlZjJkMDYuLjczOGQ3MGFmOWFmZDQwZWY4NjQ4YmU3ODA0
NjVlYmQ0OTU3NzY2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
IHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9u
IGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wg
aWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU4NGI3NjkwMGJjZDMxZjQxZjRlZDEy
MTQ1MmJlNzZmODQ4NWE1YjIuLmNkZTlmMjA1YTk1NThlZDg5ZGQ3MDc4ZGVmNGQzN2Q3NmRjOWMy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdS
ZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIHNlc3Npb25JRCgpKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNl
KCkpOwogCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAgIG1fd2FzU3RhcnRlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCmluZGV4IGM4Yjg2YzUx
MTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMuLjU4OWQ3ODMwYmQ4MTY0OThiZGUyNzZi
M2E3YTIxMmRhYmFmMGI3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9T
Lm1tCkBAIC01MiwzMCArNTIsMzAgQEAgVUlWaWV3Q29udHJvbGxlciAqTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWUKICAgICByZXR1
cm4gbmlsOwogfQogCi1jb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitjb25zdCBT
dHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JC
b3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25D
b2NvYSo+KG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5l
dHdvcmtTZXNzaW9uKCkpKQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Ym91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLWNvbnN0IFN0cmlu
ZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckNURGF0
YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK2NvbnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckNURGF0YUNvbm5lY3Rpb25TZXJ2aWNl
VHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCiB7Ci0gICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4obV9uZXR3b3JrUHJv
Y2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4obmV0d29ya1Nlc3Npb24oKSkpCiAg
ICAgICAgIHJldHVybiBzZXNzaW9uLT5jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKTsKICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotY29uc3QgU3RyaW5nJiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQorY29uc3QgU3RyaW5nJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKIHsKLSAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPihtX25ldHdvcmtQcm9jZXNz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0
YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPihuZXR3b3JrU2Vzc2lvbigpKSkKICAgICAg
ICAgcmV0dXJuIHNlc3Npb24tPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwog
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1jb25zdCBTdHJpbmcmIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCitjb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewotICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG1fbmV0d29y
a1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5ldHdvcmtTZXNzaW9uKCkp
KQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCk7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aAppbmRleCBmMzNjYWIzMDVmZWUxMjc0ZmFhN2IyMTgzOGU5YmI3ZWY3NmJiZjI3Li5mMGE3NjQ0
ZDMwZGRjMWY0ZmJmNGViZWFjYzc2ZWIxN2RkOGRiMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgK
QEAgLTc4LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpID0g
ZGVmYXVsdDsKIAogICAgICAgICB2aXJ0dWFsIElQQzo6Q29ubmVjdGlvbiogcGF5bWVudENvb3Jk
aW5hdG9yQ29ubmVjdGlvbihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsK
LSAgICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvckJvdW5kSW50
ZXJmYWNlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6
U2Vzc2lvbklEKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29v
cmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkmLCBQQUw6OlNlc3Npb25JRCkgPSAwOwotICAgICAgICB2aXJ0dWFs
IGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNz
aW9uSUQpID0gMDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGlu
YXRvckJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYpID0gMDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGlu
YXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSYpID0gMDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1l
bnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHBh
eW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXIm
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYpID0gMDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB2aXJ0
dWFsIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKLSAgICAgICAg
dmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvckNURGF0YUNvbm5lY3Rpb25T
ZXJ2aWNlVHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lv
bklEKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0
b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2Vu
dGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSA9IDA7
CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbQppbmRleCBjNGYyZjgwZDY4MmQ1MjAwODU2Yjg0NWJmNmJhYmJkY2MwNmFh
OGZiLi43NzVkZWZiYjhiNjM0YWZjMDU1OTIxNGYxNWVmY2I4ZTZmYTRlZmM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTY2LDcgKzY2LDcgQEAgdm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZChjb25zdCBTdHIKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKICNlbmRpZgogCi0gICAgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlm
aWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5O
YW1lLCBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIoKnRoaXMsIHNlc3Npb25JRCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMs
IE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJj
aGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50aWZp
ZXIsIGRvbWFpbk5hbWUsIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigqdGhpcyksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMs
IE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAg
ICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4gZXJyb3IgJUAiLCBlcnJvcik7CiAKQEAgLTI3OCwyMiArMjc4LDIyIEBAIFJldGFpblB0
cjxQS1BheW1lbnRSZXF1ZXN0PiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Q
YXltZW50UmVxdWVzdChjCiAKICNpZiBIQVZFKFBBU1NLSVRfQk9VTkRfSU5URVJGQUNFX0lERU5U
SUZJRVIpCiAgICAgLy8gRklYTUU6IFJlbW92ZSAtcmVzcG9uZHNUb1NlbGVjdG9yOiBjaGVjayBv
bmNlIHJkYXI6Ly9wcm9ibGVtLzQ4MDQxNTE2IGlzIHdpZGVseSBhdmFpbGFibGUgaW4gU0RLcy4K
LSAgICBhdXRvJiBib3VuZEludGVyZmFjZUlkZW50aWZpZXIgPSBtX2NsaWVudC5wYXltZW50Q29v
cmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoKnRoaXMsIHNlc3Npb25JRCk7CisgICAg
YXV0byYgYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyID0gbV9jbGllbnQucGF5bWVudENvb3JkaW5h
dG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCp0aGlzKTsKICAgICBpZiAoIWJvdW5kSW50ZXJm
YWNlSWRlbnRpZmllci5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjopXSkKICAgICAgICAgW3Jlc3VsdCBz
ZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXI6Ym91bmRJbnRlcmZhY2VJZGVudGlmaWVyXTsKICNl
bmRpZgogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgdXNpbmcgcmVzcG9uZHNUb1NlbGVjdG9y
LCB0aGlzIHNob3VsZCB1c2UgYSBwcm9wZXIgI2lmIHZlcnNpb24gY2hlY2suCi0gICAgYXV0byYg
YnVuZGxlSWRlbnRpZmllciA9IG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigqdGhpcywgc2Vzc2lvbklEKTsKKyAgICBhdXRvJiBidW5k
bGVJZGVudGlmaWVyID0gbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCp0aGlzKTsKICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIuaXNF
bXB0eSgpICYmIFtyZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRTb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6KV0pCiAgICAgICAgIFtyZXN1bHQgc2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOmJ1bmRsZUlkZW50aWZpZXJdOwogCi0gICAgYXV0
byYgc2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigqdGhpcywgc2Vzc2lvbklEKTsKKyAgICBh
dXRvJiBzZWNvbmRhcnlJZGVudGlmaWVyID0gbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yU291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCp0aGlzKTsKICAgICBpZiAoIXNlY29u
ZGFyeUlkZW50aWZpZXIuaXNFbXB0eSgpICYmIFtyZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6KV0pCiAgICAg
ICAgIFtyZXN1bHQgc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOnNlY29u
ZGFyeUlkZW50aWZpZXJdOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvJiBz
ZXJ2aWNlVHlwZSA9IG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvckNURGF0YUNvbm5lY3Rpb25T
ZXJ2aWNlVHlwZSgqdGhpcywgc2Vzc2lvbklEKTsKKyAgICBhdXRvJiBzZXJ2aWNlVHlwZSA9IG1f
Y2xpZW50LnBheW1lbnRDb29yZGluYXRvckNURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSgqdGhp
cyk7CiAgICAgaWYgKCFzZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHNldENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTopXSkKICAg
ICAgICAgW3Jlc3VsdCBzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU6c2VydmljZVR5cGVd
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCmluZGV4IDJhMjhiMTU5MjhkNjhlNzRiYjk1ZDA2ZjllYzE2NWUyN2MyZTI1
NTcuLjczY2ZkMWJlYjE1MjE0MTBhZTg2ZTA5ZjUwZmUzMjdhNDQ0MTU2MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0y
MjgsMjEgKzIyOCwxOCBAQCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBhZ2VQcm94eTo6cGF5bWVudENv
b3JkaW5hdG9yQ29ubmVjdGlvbihjb25zdCBXZWJQYXltZW50Q29vcgogICAgIHJldHVybiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpOwogfQogCi1jb25zdCBTdHJpbmcmIFdlYlBhZ2VQcm94eTo6
cGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorY29uc3QgU3Ry
aW5nJiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckJvdW5kSW50ZXJmYWNlSWRlbnRp
Zmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCiB7Ci0gICAgQVNTRVJUX1VO
VVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB3ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklE
KCkpOwogICAgIHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlKCkuYm91bmRJbnRlcmZhY2VJZGVudGlm
aWVyKCk7CiB9CiAKLWNvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitjb25zdCBTdHJpbmcmIFdl
YlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKIHsKLSAgICBBU1NFUlRf
VU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IHdlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9u
SUQoKSk7CiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoKTsKIH0KIAotY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6OnBheW1l
bnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK2Nv
bnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KQogewotICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gd2Vic2l0ZURh
dGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZSgpLnNv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCA1MWIzZTkwODA2NmU1ZjhjNDFlZDgwMWY2MWFlOWIxMDE3ZGY0ODVjLi44NTFiNTgwODNk
ZjgyOWJiOWNmMDc5Yzk1NzZmMTI3ZDQzNTEyMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE0Miw3
ICsxNDIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2NlcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgY29ubmVjdGlvblJl
cXVlc3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKIHsKLSAg
ICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5
LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBj
b25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikg
bXV0YWJsZSB7CisgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdl
YlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNl
c3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9j
ZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVz
dElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZmQ5OWZjM2RkMDhkMGUzNmY4M2MzOTM3NDNiNDM0
Mjc5ZGFiZjA1Ny4uMjAwZGNlZjNkYTUyMGIyNjliMjFlNTEzMzk3ODQ4MzZiMDE3ZGMzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwOTQsMTUgKzIwOTQsMTUg
QEAgcHJpdmF0ZToKICAgICAvLyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50CiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBJUEM6OkNvbm5lY3Rpb24qIHBheW1lbnRDb29yZGlu
YXRvckNvbm5lY3Rpb24oY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsK
LSAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvckJvdW5kSW50ZXJmYWNlSWRlbnRp
Zmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lvbklEKSBm
aW5hbDsKLSAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBB
TDo6U2Vzc2lvbklEKSBmaW5hbDsKLSAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRv
clNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKKyAgICBjb25zdCBTdHJpbmcm
IHBheW1lbnRDb29yZGluYXRvckJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihjb25zdCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29v
cmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRv
ckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQ
Qzo6U3RyaW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKICAgICB2
b2lkIHBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CiAjZW5k
aWYKICNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJ
Vmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxl
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwotICAgIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOworICAg
IGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VU
eXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQ
YXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpICYm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGQzYzgyZjA0Njg0OGM4Y2QwNTliYzI1NjliZjRjYTI5M2E0ZmYxNGEuLjVkNjNk
NDUzODEzNzUzNTViNjU5NDJhYjM2MTVmMjYwMDg1YzhmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ3Niw2ICsxNDc2LDEyIEBAIFdlYlBy
b2Nlc3NQb29sJiBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NQb29sKCkgY29uc3QKICAgICByZXR1
cm4gKm1fcHJvY2Vzc1Bvb2wuZ2V0KCk7CiB9CiAKK1BBTDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQ
cm94eTo6c2Vzc2lvbklEKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3Jl
KTsKKyAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKK30KKwogI2lm
IFBMQVRGT1JNKFdBVENIT1MpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0YWtlQmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1ZDQzNWJmM2U4ZDBjNmYxMTQ5OTQ5MjEwYTQzMmVi
YmEyZTZmMjdiLi4yN2Y2YjM2MThmMzlhNDAyMDExODA0MGVmN2ZlNzYyMDQzOTBiYWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTMxLDYgKzEzMSw4
IEBAIHB1YmxpYzoKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBj
b25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFT
dG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7
CisgICAgCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKICAgICBzdGF0
aWMgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9ySWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllcik7CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJQYWdlUHJv
eHlJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCmluZGV4IDI4OWFjZTUwOTQxZGNhNGRiMjI2MmFjZTdlZjg2YWU2ZDhkMzUyODIu
LjQwN2Q5NmE2NjcyZGZiZjhhMzJiZjE4M2YxN2JjNWUzNTU2MTkyMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTI3OSw5ICsxMjc5
LDggQEAgVUlWaWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQ
cmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QKICAgICByZXR1cm4gdWlDbGllbnQoKS5wcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKIH0KIAotY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6
OnBheW1lbnRDb29yZGluYXRvckNURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK2NvbnN0
IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9u
U2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewotICAgIEFT
U0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gd2Vic2l0ZURhdGFTdG9yZSgpLnNl
c3Npb25JRCgpKTsKICAgICByZXR1cm4gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJh
dGlvbigpLmN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA2YzJmMTNkMDY2MDU1NzZi
M2FhOGI1NDkzYWVmOTc1MzE4ZmNkMzk0Li45NzMzYTYzMGYyN2UxYzIwNDM1NjY4OWFmMDcyNTBk
OWJlMWJlMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9zZXNz
aW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9jb25uZWN0aW9uVG9TZXJ2ZXIoSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZSgqdGhpcykpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaElEQkNvbm5lY3Rpb25U
b1NlcnZlcihzZXNzaW9uSUQpLCAwKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKCksIDApOwog
fQogCiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6On5XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuY3BwCmluZGV4IDc4MTEyMDc3ODRhZjYwYTJhZGVjNTZjYWE1ODY0YTcxYjNhZDEy
M2MuLjY2ZjQ0MmMyOWY5OTc0MWU0ZTE2NWNkZGE5MTI4YjhmNjk1ZTE2M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9i
UmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9u
SGFuZGxlOwogCkBAIC00NCwzOSArNDQsMzkgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVn
aXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYKICAg
ICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRP
bmx5LCBleHRlbnNpb25IYW5kbGUpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Np
b25JRCwgdXJsLCBmaWxlLT5wYXRoKCksIGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAw
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBmaWxlLT5wYXRoKCksIGV4dGVuc2lv
bkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6
cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
Cit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJs
LCBibG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwodXJs
LCBibG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVy
QmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJM
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTCB7IHNlc3Npb25JRCwgdXJsLCBzcmNV
UkwgfSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGcm9tVVJMIHsgdXJsLCBzcmNVUkwgfSwg
MCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYm
IGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAg
QVNTRVJUKGZpbGUpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQo
c2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50VHlwZSksIDApOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIGZp
bGUtPnBhdGgoKSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94
eTo6dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHNlc3Np
b25JRCwgdXJsKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnJlZ2lzdGVyQmxvYlVSTCh1cmwpLCAwKTsKIH0KIAot
dm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcg
bG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKHNlc3Npb25JRCwgdXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQp
LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwg
ZW5kKSwgMCk7CiB9CiAKLXVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6Ymxv
YlNpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCkKK3Vuc2lnbmVk
IGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIHVpbnQ2NF90IHJlc3VsdFNpemU7Ci0gICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpCbG9iU2l6ZShzZXNzaW9uSUQsIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6QmxvYlNpemU6OlJlcGx5KHJlc3VsdFNpemUpLCAwKSkKKyAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkJsb2JTaXplKHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6QmxvYlNpemU6OlJlcGx5KHJlc3VsdFNpemUpLCAwKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4
NzgwMDZlZDk1MzEyMDA0M2NhOWYwOTNlYWFkZWM3MDZjMzRiMTk0Li5lMThmMGFlNzhmMmU2MjU3
ZmQ4MjQ2OTk1M2ZlMzI0NTYzZWE5ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAg
LTIxMCw5ICsyMTAsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6UwogewogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVS
THMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXcml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQsIGJsb2JVUkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhi
bG9iVVJMcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRl
bnRpZmllciwgUmVzb3VyY2VFcnJvciYmIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UpCkBAIC0yNjAsOCArMjYwLDggQEAgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3MKIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbiYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VS
VChzZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uc0J5U2Vz
c2lvbi5lbnN1cmUoc2Vzc2lvbklELCBbc2Vzc2lvbklEXSB7Ci0gICAgICAgIHJldHVybiBXZWJT
V0NsaWVudENvbm5lY3Rpb246OmNyZWF0ZShzZXNzaW9uSUQpOworICAgIHJldHVybiAqbV9zd0Nv
bm5lY3Rpb25zQnlTZXNzaW9uLmVuc3VyZShzZXNzaW9uSUQsIFtdIHsKKyAgICAgICAgcmV0dXJu
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y3JlYXRlKCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDJiNGVhMWE3OTRkYWU5M2U4
M2I4MTQ1YTUwMWI4Y2EzMzQyYWRiOTYuLmU4ODQ5ZmVjMTdiYTA2ODJlYmJkYTRkM2RmODk3MWI2
ZDFlMTk0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBhIHNpbmdsZSBjb25uZWN0aW9uLgogICAgIEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIFJlZlB0cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+PiBtX3N3Q29ubmVjdGlvbnNC
eVNlc3Npb247CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDNlNzlmOWE3ZTE0ZTVhMTgyMmY2
YjRlNmQ1ZWMyYmQ3ZGIzNjIzNmQuLmNjN2VjNDJlZjE1YjFlMzEyYjI0NDM3OGM2MzYxZDBjMWU4
NmE1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6
Q29ubmVjdFN0YXR1cyBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBj
b25zdAogICAgIGlmIChyZXF1ZXN0LT51cmwoKSAhPSB1cmwgJiYgbV9jbGllbnQpCiAgICAgICAg
IG1fY2xpZW50LT5kaWRVcGdyYWRlVVJMKCk7CiAKLSAgICBNZXNzYWdlU2VuZGVyOjpzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlU29ja2V0Q2hhbm5l
bCB7IG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpLCAqcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZp
ZXIoKSB9KTsKKyAgICBNZXNzYWdlU2VuZGVyOjpzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlU29ja2V0Q2hhbm5lbCB7ICpyZXF1ZXN0LCBwcm90b2Nv
bCwgaWRlbnRpZmllcigpIH0pOwogICAgIHJldHVybiBDb25uZWN0U3RhdHVzOjpPSzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVh
bS5jcHAKaW5kZXggMWZiNjk2MWZmZjBiYWQ2MzFkZTEwOTJjMDRjZjI2OGUyYzI3OGM0Yy4uM2Nh
OTAwNDJiNzUyNzliZjM5MWJjNTMyYWQxOTFiMjZiZWE2Mzg0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC04Miwx
MSArODIsMTEgQEAgUmVmPFdlYlNvY2tldFN0cmVhbT4gV2ViU29ja2V0U3RyZWFtOjpjcmVhdGUo
Y29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUMKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBjbGllbnQsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBh
cnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRTdHJlYW06OldlYlNvY2tldFN0cmVhbShjb25zdCBV
UkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikKK1dlYlNv
Y2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY2FjaGVQYXJ0aXRpb24pCiAgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQp
CiAgICAgLCBtX2NsaWVudChjbGllbnQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRTdHJlYW0odXJs
LCBzZXNzaW9uSUQsIGNhY2hlUGFydGl0aW9uLCBpZGVudGlmaWVyKCkpLCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNy
ZWF0ZVNvY2tldFN0cmVhbSh1cmwsIGNhY2hlUGFydGl0aW9uLCBpZGVudGlmaWVyKCkpLCAwKTsK
IAogICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2spOwog
ICAgIEFTU0VSVCghZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwKCkuY29udGFpbnMoaWRlbnRpZmll
cigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBhOGFhNjc5NjIyOTJhYThhMjNjZmE2Njhi
OWY2N2Y1ZDM0NzQ3NzA5Li4wNmE0Y2M3ZGI3YTE4YzExODdiYWZjNjU4ODU1NDMyYzQ1ZWIyYWUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTU1LDEzICs1NSwxMSBAQCB1c2luZyBuYW1lc3Bh
Y2UgUEFMOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIAotV2ViU1dDbGllbnRDb25uZWN0
aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rpb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1faWRlbnRpZmllcihQcm9jZXNzOjppZGVudGlm
aWVyKCkpCitXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbigpCisg
ICAgOiBtX2lkZW50aWZpZXIoUHJvY2Vzczo6aWRlbnRpZmllcigpKQogICAgICwgbV9zd09yaWdp
blRhYmxlKG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5UYWJsZT4oKSkKIHsKLSAgICBBU1NFUlQo
bV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIHsgc2Vzc2lvbklE
IH0pOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpF
c3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24geyB9KTsKIH0KIAogV2ViU1dDbGllbnRDb25uZWN0
aW9uOjp+V2ViU1dDbGllbnRDb25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggZWZlZjM2
YmNhY2QyODU0NTdiZTAxNGY4ZDRjYmM5ZGE2OTljMmY4Yi4uMjdmZWEyYzFiMjRiOGMyYTk2NGM0
ZTk2N2QzZjdlY2EzOGQwMzcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4K
LSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw3ICs0OCw3IEBAIGNsYXNzIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlcjsKIAogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uIGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5k
ZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU1dDbGllbnRDb25uZWN0aW9uIHsgc2Vzc2lvbklE
IH0pOyB9CisgICAgc3RhdGljIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU1dDbGllbnRDb25uZWN0aW9uKTsgfQogICAgIH5XZWJT
V0NsaWVudENvbm5lY3Rpb24oKTsKIAogICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KQEAgLTY5LDEwICs2OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c3luY1Rlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmlu
YWw7CiAKLSAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
c3Npb25JRDsgfQotCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlNXQ2xpZW50Q29ubmVjdGlv
bihQQUw6OlNlc3Npb25JRCk7CisgICAgV2ViU1dDbGllbnRDb25uZWN0aW9uKCk7CiAKICAgICB2
b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRh
dGEmKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0JikgZmluYWw7CkBAIC05OCwxNCArOTUs
MTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KEZ1bmN0aW9u
PHZvaWQoKT4mJiB0YXNrKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0K
KyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KIAogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25z
dCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYpOwogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZUlzSW1w
b3J0ZWQoKTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOwogICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwogCiAgICAgVW5pcXVlUmVmPFdlYlNXT3JpZ2luVGFibGU+IG1fc3dPcmlnaW5UYWJs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCBlODlkMGIzN2RlODkx
MjBlNjQzYjQ3MzE3NDFkMjhhMTE2Mzg2YTlkLi5lNjMzYzc3YzcxZjBiMGVmNzU0OTVkMTA0MjY2
MjJkOTkzZDIzNmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0x
MDAsNyArMTAwLDcgQEAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24KICNlbmRpZgogewogICAgIHVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RvcmUpOwotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3Rh
Ymxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV9yZWdpc3RyYWJsZURvbWFpbiwgc2Vzc2lvbklE
IH0sIDApOworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0
aW9uIHsgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCAwKTsKIH0KIAogV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246On5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDgzMGU1YzgxNWZhNDg0ZTNjN2Yx
MjdjYzJlNGVlMzExYzQ5NGQxMDMuLmM1NGY3ZGY5MWYyZDVmNDVlMGUwN2YwOTFlYzFiMDlhNWM1
OTFlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDIoKQogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKG1fZnJhbWVTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3ZlU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lKAotICAgICAgICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50
aWZpZXItPnNlc3Npb25JRCwgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIt
PmZyYW1lSUQsIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5wYWdlSUQp
LCAwKTsKKyAgICAgICAgICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVy
LT5mcmFtZUlELCBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+cGFnZUlE
KSwgMCk7CiAgICAgICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyID0g
V1RGOjpudWxsb3B0OwogICAgIH0KICNlbmRpZgpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbENoYW5nZURvY3VtZW50KGNvbnN0IFVSTCYg
Y3VycmVudFVybCwgY29uCiAKICAgICBpZiAobV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lk
ZW50aWZpZXIgJiYgIVdlYkNvcmU6OmFyZVJlZ2lzdHJhYmxlRG9tYWluc0VxdWFsKGN1cnJlbnRV
cmwsIG5ld1VybCkpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoCi0g
ICAgICAgICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+c2Vzc2lv
bklELCBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9m
cmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDApOworICAgICAg
ICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPmZyYW1lSUQsIG1f
ZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5wYWdlSUQpLCAwKTsKICAgICAg
ICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7
CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRl
eCA1ZmIzY2YyMDlhM2U2YzFiZTM5MGRiZjhlYWQ5MDQzZmU0M2ExNDQ1Li5lMWI0YjllYjNmMzg0
ZjVmNWZmMjkxMzFhOTNjOGZkNmRmMGMwNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHAKQEAgLTU5LDE0ICs1OSwxNCBAQCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogewogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1l
bnQpCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3Vt
ZW50JiBvcGVuZXJEb2N1bWVudCkKIHsKICAgICBhdXRvIG9wZW5lclVybCA9IG9wZW5lckRvY3Vt
ZW50LnVybCgpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbiB7IG9wZW5lclVy
bCB9OwogICAgIGlmIChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyRG9tYWlu
CiAgICAgICAgICYmICFvcGVuZXJEb2N1bWVudC5oYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9y
YWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Mp
CiAgICAgICAgICYmICFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwg
V1RGOjpibGFua1VSTCgpKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoc2Vzc2lvbklELCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJ
RCwgb3BlbmVyRG9tYWluKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVy
RG9tYWluKSwgMCk7CiAgICAgICAgIAogICAgICAgICAvLyBSZW1lbWJlciB1c2VyIGludGVyYWN0
aW9uLWJhc2VkIHJlcXVlc3RzIHNpbmNlIHRoZXkgZG9uJ3QgbmVlZCB0byBiZSByZXBlYXRlZC4K
ICAgICAgICAgb3BlbmVyRG9jdW1lbnQuc2V0SGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFn
ZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKTsK
QEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2Vy
SW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAKICAgICAvLyBXZSBu
b3RpZnkgcmlnaHQgYXdheSBpbiBjYXNlIG9mIGEgdXNlciBpbnRlcmFjdGlvbiBpbnN0ZWFkIG9m
IHdhaXRpbmcgdGhlIHVzdWFsIDUgc2Vjb25kcyBiZWNhdXNlIHdlIHdhbnQKICAgICAvLyB0byB1
cGRhdGUgY29va2llIGJsb2NraW5nIHN0YXRlIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCi0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpMb2dVc2VySW50ZXJhY3Rpb24oZG9jdW1lbnQuc2Vzc2lvbklEKCksIHRvcEZyYW1lRG9tYWlu
KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpMb2dVc2VySW50ZXJhY3Rpb24odG9wRnJhbWVEb21haW4pLCAwKTsKIAog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChtX3Nob3VsZExvZ1VzZXJJbnRlcmFj
dGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUphci5jcHAKaW5kZXggZjZjNTU3ZDVmMGZkMjAxZGJiNTA1MTE0N2ViYzI3MGE1YjQ1Y2YzYy4u
M2FiNzhlNTM5ZDdlZWQ5YmM1YzI4YWYzZWNiY2VmNTBmMDdmN2E2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC01OSw3ICs1
OSw3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIAogICAgIFN0cmluZyBjb29raWVTdHJpbmc7
CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuc2Vzc2lvbklEKCksIGRvY3VtZW50LmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhkb2N1bWVudCwgdXJsKSksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2ll
U3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRv
Y3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVz
KGRvY3VtZW50LCB1cmwpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCksIDApKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsK
QEAgLTc0LDIyICs3NCwyMiBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3Jl
OjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgICAgICBwYWdl
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CiAgICAgfQogCi0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpT
ZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5zZXNzaW9uSUQoKSwgZG9jdW1lbnQuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIGNvb2tpZVN0cmluZyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZyksIDApOwogfQogCiBib29sIFdlYkNvb2tpZUphcjo6
Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAog
ewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxl
ZChkb2N1bWVudC5zZXNzaW9uSUQoKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQorICAgIGlmICghV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0VuYWJsZWQoKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3Jl
OjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1
cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykgY29uc3QKIHsKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShzZXNzaW9uSUQsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHko
Y29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4geyBjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZCA/IFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZDo6WWVzIDogV2ViQ29yZTo6
U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpObyB9OwogfQpAQCAtMTAzLDE0ICsxMDMsMTQgQEAgYm9v
bCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHUKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLnBhZ2VJRCgpOwogICAgIH0KIAotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhk
b2N1bWVudC5zZXNzaW9uSUQoKSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2Ft
ZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tp
ZXMpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdl
SUQpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tp
ZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkNvb2tpZUphcjo6ZGVsZXRlQ29va2llKGNvbnN0IFdl
YkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShkb2N1bWVudC5zZXNzaW9uSUQoKSwg
dXJsLCBjb29raWVOYW1lKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUodXJsLCBjb29raWVOYW1l
KSwgMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDRjZTEwMTI4YWM0MGJjZmRhYjViZDdk
MGZlNGIxODY0ZWM5MjdiM2EuLmI0ODVjNTZiNDExNmFmMWFlYTY2MzgwYjcxYmExZDE1MjQyMzc5
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
QEAgLTI4Myw5ICsyODMsNyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaQogICAgIGF1dG8gcG9s
aWN5RG93bmxvYWRJRCA9IG1fcG9saWN5RG93bmxvYWRJRDsKICAgICBtX3BvbGljeURvd25sb2Fk
SUQgPSB7IH07CiAKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gcGFnZSgpID8gcGFnZSgpLT5zZXNz
aW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0gICAgd2ViUHJv
Y2Vzcy5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQoc2Vz
c2lvbklELCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKSwgMCk7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpTdGFydERvd25sb2FkKHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZE5h
bWUpLCAwKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQpAQCAtMzA3LDcgKzMwNSw3IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIsCiAgICAgZWxzZQogICAgICAgICBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IDA7CiAK
LSAgICB3ZWJQcm9jZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHNlc3Npb25JRCwgbWFpblJlc291cmNlTG9hZElk
ZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSwgMCk7CisgICAg
d2ViUHJvY2Vzcy5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZChtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5
RG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAwKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2
ZWwgbWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IHJlcXVlc3RJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MWNkYzBiNjllOGE0MzIzYmIzYTBjZWIzZWViMjAxZWIxNWIwMmJmMy4uYTkzYTU4MGM0MzMzMDhm
NTdmMWM3NmEzNGVhMzIzZGJjMTUzZjc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgV2ViUGFnZTo6
Y2xvc2UoKQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyhzZXNzaW9uSUQoKSwgbV9pZGVudGlmaWVyKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhclBhZ2VTcGVj
aWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKG1faWRlbnRpZmllciksIDApOwogI2Vu
ZGlmCiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKQEAgLTY1MzUsMTIgKzY1MzUsMTIgQEAgdm9p
ZCBXZWJQYWdlOjpmcmFtZUJlY2FtZVJlbW90ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgR2xv
YmFsRnJhbWVJZGVudGlmaWVyJiYKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogdm9pZCBXZWJQYWdlOjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIFdlYkZyYW1l
JiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6SGFzU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQoKSwg
V1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZS5m
cmFtZUlEKCksIG1faWRlbnRpZmllciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6SGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWlu
KSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lLmZyYW1lSUQoKSwgbV9pZGVudGlmaWVy
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lz
dHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIFdlYkZyYW1lJiBmcmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklEKCksIFdURk1v
dmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWUuZnJhbWVJ
RCgpLCBtX2lkZW50aWZpZXIsIG1fd2ViUGFnZVByb3h5SWRlbnRpZmllciksIFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmcmFtZSA9IG1ha2VSZWYoZnJh
bWUpLCBzZXNzaW9uSUQgPSBzZXNzaW9uSUQoKSwgcGFnZUlEID0gbV9pZGVudGlmaWVyLCBmcmFt
ZUlEID0gZnJhbWUuZnJhbWVJRCgpXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVk
LCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIG11
dGFibGUgeworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3Zl
KHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lLmZyYW1lSUQo
KSwgbV9pZGVudGlmaWVyLCBtX3dlYlBhZ2VQcm94eUlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1l
KSwgc2Vzc2lvbklEID0gc2Vzc2lvbklEKCksIHBhZ2VJRCA9IG1faWRlbnRpZmllciwgZnJhbWVJ
RCA9IGZyYW1lLmZyYW1lSUQoKV0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKHdhc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
OlllcykKICAgICAgICAgICAgIGZyYW1lLT5mcmFtZUxvYWRlckNsaWVudCgpLT5zZXRIYXNGcmFt
ZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyh7IHNlc3Npb25JRCwgZnJhbWVJRCwgcGFnZUlEIH0pOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3YXNHcmFudGVkLCBwcm9tcHRXYXNTaG93bik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOWIzNGVjMDQ2ZjVmMTg5
MGNlOTZjZDIwODZkYzY3ZjNmNGY1NzFlZi4uYTBmMDE5YjcyZjU1ODFlMzk2OWEwNTQwYmE2Mjdi
NTgxYmZlMDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MzkxLDggKzM5MSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAgICBzZXRTaG91bGRV
c2VGb250U21vb3RoaW5nKHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZyk7CiAKLSAg
ICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLQogICAgIHNldFRlcm1pbmF0aW9u
VGltZW91dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CiAKICAgICByZXNldFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcyhwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2hlcyk7CkBAIC00NjIsNiArNDYwLDggQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyYmIHAKICAgICAg
ICAgc3VwcGxlbWVudC0+c2V0V2Vic2l0ZURhdGFTdG9yZShwYXJhbWV0ZXJzKTsKIAogICAgIHBs
YXRmb3JtU2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSk7
CisgICAgCisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7CiB9CiAKIGJvb2wg
V2ViUHJvY2Vzczo6aGFzUGFnZVJlcXVpcmluZ1BhZ2VDYWNoZVdoaWxlU3VzcGVuZGVkKCkgY29u
c3QKQEAgLTY1MSw2ICs2NTEsOCBAQCBXZWJQYWdlKiBXZWJQcm9jZXNzOjp3ZWJQYWdlKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIAogdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdl
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiB7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuc2Vzc2lvbklEID09IHNlc3Npb25JRCgp
KTsKKwogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBmb3IgcGFnZSBleGlzdGVuY2Ug
aGVyZSBzaW5jZSBkdXJpbmcgYSB3aW5kb3cub3BlbigpIChvciB0YXJnZXRlZAogICAgIC8vIGxp
bmspIHRoZSBXZWJQYWdlIGdldHMgY3JlYXRlZCBib3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5k
bGVyIGFuZCB0aHJvdWdoIHRoZSBub3JtYWwgd2F5LiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcGFn
ZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKQEAgLTY2OSw2ICs2NzEsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJgogCiB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CisgICAgQVNTRVJUKHNl
c3Npb25JRCA9PSB0aGlzLT5zZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5jb250
YWlucyhwYWdlSUQpKTsKIAogICAgIHBhZ2VXaWxsTGVhdmVXaW5kb3cocGFnZUlEKTsKQEAgLTEx
OTAsNiArMTE5Myw3IEBAIHN0YXRpYyBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgZ2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYKIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbiYgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKG1fc2Vz
c2lvbklEKTsKIAogICAgIC8vIElmIHdlJ3ZlIGxvc3Qgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIG5l
dHdvcmsgcHJvY2VzcyAoZS5nLiBpdCBjcmFzaGVkKSB0cnkgdG8gcmUtZXN0YWJsaXNoIGl0Lgog
ICAgIGlmICghbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCmluZGV4IDI5MjhjMTA5NTRiN2ZjY2JmOTIwNTk2YTIzNjk2NzVhNjg1
ZjdkNDUuLjA0ZjNiZWVmN2RjNDIzZWI3NGUwNTMxZDVmZjAyM2IxMTg1NDY3ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTYyLDkgKzE2Miw3IEBAIHB1YmxpYzoK
IAogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KICAgICAKLSAgICAvLyBQcmV3YXJtZWQgV2ViUHJvY2Vz
c2VzIGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lvbklEIHlldCwgd2hpY2ggaXMgd2h5
IHRoaXMgaXMgYW4gb3B0aW9uYWwuCi0gICAgLy8gQnkgdGhlIHRpbWUgdGhlIFdlYlByb2Nlc3Mg
Z2V0cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhIHNlc3Npb25JRC4KLSAg
ICBjb25zdCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4mIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Vzc2lvbklEOyB9CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
eyBBU1NFUlQobV9zZXNzaW9uSUQpOyByZXR1cm4gKm1fc2Vzc2lvbklEOyB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIGNvbXBvc2l0aW5nUmVu
ZGVyU2VydmVyUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQ
b3J0OyB9CkBAIC01NzQsNiArNTcyLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgSGFzaE1h
cDxTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhTWFwKj4gbV9zdG9yYWdlQXJlYU1h
cHM7CisgICAgCisgICAgLy8gUHJld2FybWVkIFdlYlByb2Nlc3NlcyBkbyBub3QgaGF2ZSBhbiBh
c3NvY2lhdGVkIHNlc3Npb25JRCB5ZXQsIHdoaWNoIGlzIHdoeSB0aGlzIGlzIGFuIG9wdGlvbmFs
LgorICAgIC8vIEJ5IHRoZSB0aW1lIHRoZSBXZWJQcm9jZXNzIGdldHMgYSBXZWJQYWdlLCBpdCBp
cyBndWFyYW50ZWVkIHRvIGhhdmUgYSBzZXNzaW9uSUQuCiAgICAgT3B0aW9uYWw8UEFMOjpTZXNz
aW9uSUQ+IG1fc2Vzc2lvbklEOwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>